Skip to content

Commit

Permalink
Merge pull request #144 from vdice/add-testing-notes
Browse files Browse the repository at this point in the history
doc(testing-notes.md): add testing notes, test data
  • Loading branch information
Vaughn Dice committed Jun 2, 2016
2 parents 463a30f + ac9e0b3 commit 20cdeae
Show file tree
Hide file tree
Showing 2 changed files with 328 additions and 0 deletions.
82 changes: 82 additions & 0 deletions doc/testing-notes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
# Testing Locally

Sometimes we wish to test a local version of Workflow Manager API, rather than hitting our staging or prod environments, potentially also using a certain version of the [Workflow Manager client](https://github.com/deis/workflow-manager).

Here we provide the dependencies and steps needed to do so.

## Dependencies

- [AWS][aws] credentials/ability to launch a (free tier) [RDS instance][rds]
- [psql](https://www.postgresql.org/docs/9.2/static/app-psql.html)
- a running [Deis Workflow](https://github.com/deis/workflow/blob/master/src/installing-workflow/index.md) cluster...
- installed on a [Kubernetes](http://kubernetes.io/) cluster

## Steps

1. Create a `Dev/Test` [RDS instance][rds] using PostgreSQL 9.4.7 in [AWS][aws]. The Free Tier type of `db.t2.micro` is fine. You will specify:

- RDS instance name: `rdsinstance`
- db name `dbname`*
- db user name `dbuser`
- db password `dbpass`

Under `Configure Advanced Settings`, select `rds-launch-wizard (VPC)` for `VPC Security Group(s)`. This sets up the rule for `Inbound` traffic to allow all (`0.0.0.0/0`). Otherwise, the provided defaults can be used.

\**AWS will let you create an instance with db name blank, so don't forget to populate it with a value.*


2. Once the instance status is `Available`, we can seed `dbname` with test data:

```console
psql \
-f /path/to/test_data.sql \
--host <rds endpoint> \
--port 5432 \
--username dbuser \
--dbname dbname
```

3. On the installed Deis Workflow cluster we will launch a local version of Workflow Manager API. Here we refer to the routable ip for reaching the controller as `ROUTABLE_IP`, which can be the internal router service IP, externally accessible load balancer IP or node IP if using node port:

```console
export
export DEIS_CONTROLLER_URL=http://deis.${ROUTABLE_IP}.nip.io
deis auth:register $DEIS_CONTROLLER_URL
deis apps:create --no-remote wfm-api
deis config:set \
AWS_SECRET_ACCESS_KEY="${AWS_SECRET_ACCESS_KEY}" \
AWS_ACCESS_KEY_ID="${AWS_ACCESS_KEY_ID}" \
WORKFLOW_MANAGER_API_RDS_REGION=“${RDS_REGION}" \
WORKFLOW_MANAGER_API_DBINSTANCE=“${RDS_INSTANCE_NAME}" \
WORKFLOW_MANAGER_API_DBUSER=“${DBUSER}" \
WORKFLOW_MANAGER_API_DBPASS=“${DBPASS}" \
WORKFLOW_MANAGER_API_PORT=8081 \
-a wfm-api
deis pull quay.io/deisci/workflow-manager-api:canary -a wfm-api
# optionally, specify org/workflow-manager-api:tag
# to test a different wfm-api version, provided the image is
# publicly accessible
```

Let's verify that our wfm-api app is healthy. The following should return the current cluster count, depending on `test_data.sql` provided:

`curl http://wfm-api.${ROUTABLE_IP}.nip.io/v3/clusters/count`

4. Update the existing `deis-workflow-manager` pod to point to our local wfm-api app:

```console
kubectl edit rc deis-workflow-manager —namespace=deis
# update VERSIONS_API_URL to point to local wfm-api endpoint:
# http://wfm-api.${ROUTABLE_IP}.nip.io
# optionally, can also specify a different workflow-manager
# image, provided it is publicly accessible
kubectl scale rc deis-workflow-manager —namespace=deis —replicas=0
kubectl scale rc deis-workflow-manager —namespace=deis —replicas=1
```

The following should now return the previous cluster count incremented by 1 thanks to our newly reporting `deis-workflow-manager` pod:

`curl http://wfm-api.${ROUTABLE_IP}.nip.io/v3/clusters/count`

[aws]: https://aws.amazon.com/
[rds]: https://aws.amazon.com/rds/
246 changes: 246 additions & 0 deletions test_data/test_data.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,246 @@
--
-- PostgreSQL database dump
--

-- Dumped from database version 9.4.7
-- Dumped by pg_dump version 9.5.2

SET statement_timeout = 0;
SET lock_timeout = 0;
SET client_encoding = 'UTF8';
SET standard_conforming_strings = on;
SET check_function_bodies = false;
SET client_min_messages = warning;
SET row_security = off;

--
-- Name: plpgsql; Type: EXTENSION; Schema: -; Owner:
--

CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog;


--
-- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner:
--

COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language';


SET search_path = public, pg_catalog;

SET default_tablespace = '';

SET default_with_oids = false;

--
-- Name: clusters; Type: TABLE; Schema: public; Owner: dbuser
--

CREATE TABLE IF NOT EXISTS clusters (
cluster_id uuid NOT NULL,
data json
);


ALTER TABLE clusters OWNER TO dbuser;

--
-- Name: clusters_checkins; Type: TABLE; Schema: public; Owner: dbuser
--

CREATE TABLE IF NOT EXISTS clusters_checkins (
checkins_id bigint NOT NULL,
cluster_id uuid,
created_at timestamp without time zone,
data json
);


ALTER TABLE clusters_checkins OWNER TO dbuser;

--
-- Name: clusters_checkins_checkins_id_seq; Type: SEQUENCE; Schema: public; Owner: dbuser
--

CREATE SEQUENCE clusters_checkins_checkins_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;


ALTER TABLE clusters_checkins_checkins_id_seq OWNER TO dbuser;

--
-- Name: clusters_checkins_checkins_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: dbuser
--

ALTER SEQUENCE clusters_checkins_checkins_id_seq OWNED BY clusters_checkins.checkins_id;


--
-- Name: versions; Type: TABLE; Schema: public; Owner: dbuser
--

CREATE TABLE IF NOT EXISTS versions (
version_id bigint NOT NULL,
component_name character varying(32),
train character varying(24),
version character varying(32),
release_timestamp timestamp without time zone,
data json
);


ALTER TABLE versions OWNER TO dbuser;

--
-- Name: versions_version_id_seq; Type: SEQUENCE; Schema: public; Owner: dbuser
--

CREATE SEQUENCE versions_version_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;


ALTER TABLE versions_version_id_seq OWNER TO dbuser;

--
-- Name: versions_version_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: dbuser
--

ALTER SEQUENCE versions_version_id_seq OWNED BY versions.version_id;


--
-- Name: checkins_id; Type: DEFAULT; Schema: public; Owner: dbuser
--

ALTER TABLE ONLY clusters_checkins ALTER COLUMN checkins_id SET DEFAULT nextval('clusters_checkins_checkins_id_seq'::regclass);


--
-- Name: version_id; Type: DEFAULT; Schema: public; Owner: dbuser
--

ALTER TABLE ONLY versions ALTER COLUMN version_id SET DEFAULT nextval('versions_version_id_seq'::regclass);


--
-- Data for Name: clusters; Type: TABLE DATA; Schema: public; Owner: dbuser
--

COPY clusters (cluster_id, data) FROM stdin;
4f0d9118-cfaa-4265-9335-cc31c6c7f15f {"components":[{"component":{"description":"For testing only!","name":"deis-builder"},"version":{"train":"","version":"v2-beta"}},{"component":{"description":"For testing only!","name":"deis-controller"},"version":{"train":"","version":"v2-beta"}},{"component":{"description":"For testing only!","name":"deis-database"},"version":{"train":"","version":"v2-beta"}},{"component":{"description":"For testing only!","name":"deis-logger"},"version":{"train":"","version":"v2-beta"}},{"component":{"description":"For testing only!","name":"deis-minio"},"version":{"train":"","version":"v2-beta"}},{"component":{"description":"For testing only!","name":"deis-monitor-grafana"},"version":{"train":"","version":"v2-beta"}},{"component":{"description":"For testing only!","name":"deis-monitor-influxdb"},"version":{"train":"","version":"v2-beta"}},{"component":{"description":"For testing only!","name":"deis-monitor-stdout"},"version":{"train":"","version":"v2-beta"}},{"component":{"description":"For testing only!","name":"deis-registry"},"version":{"train":"","version":"v2-beta"}},{"component":{"description":"For testing only!","name":"deis-router"},"version":{"train":"","version":"v2-beta"}},{"component":{"name":"deis-workflow-manager"},"version":{"train":""}}],"id":"4f0d9118-cfaa-4265-9335-cc31c6c7f15f"}
\.


--
-- Data for Name: clusters_checkins; Type: TABLE DATA; Schema: public; Owner: dbuser
--

COPY clusters_checkins (checkins_id, cluster_id, created_at, data) FROM stdin;
1 4f0d9118-cfaa-4265-9335-cc31c6c7f15f 2016-05-31 23:16:25 {"components":[{"component":{"description":"For testing only!","name":"deis-builder"},"version":{"train":"","version":"v2-beta"}},{"component":{"description":"For testing only!","name":"deis-controller"},"version":{"train":"","version":"v2-beta"}},{"component":{"description":"For testing only!","name":"deis-database"},"version":{"train":"","version":"v2-beta"}},{"component":{"description":"For testing only!","name":"deis-logger"},"version":{"train":"","version":"v2-beta"}},{"component":{"description":"For testing only!","name":"deis-minio"},"version":{"train":"","version":"v2-beta"}},{"component":{"description":"For testing only!","name":"deis-monitor-grafana"},"version":{"train":"","version":"v2-beta"}},{"component":{"description":"For testing only!","name":"deis-monitor-influxdb"},"version":{"train":"","version":"v2-beta"}},{"component":{"description":"For testing only!","name":"deis-monitor-stdout"},"version":{"train":"","version":"v2-beta"}},{"component":{"description":"For testing only!","name":"deis-registry"},"version":{"train":"","version":"v2-beta"}},{"component":{"description":"For testing only!","name":"deis-router"},"version":{"train":"","version":"v2-beta"}},{"component":{"description":"For testing only!","name":"deis-workflow-manager"},"version":{"train":"","version":"v2-beta"}}],"id":"4f0d9118-cfaa-4265-9335-cc31c6c7f15f"}
2 4f0d9118-cfaa-4265-9335-cc31c6c7f15f 2016-05-31 23:25:51 {"components":[{"component":{"description":"For testing only!","name":"deis-builder"},"version":{"train":"","version":"v2-beta"}},{"component":{"description":"For testing only!","name":"deis-controller"},"version":{"train":"","version":"v2-beta"}},{"component":{"description":"For testing only!","name":"deis-database"},"version":{"train":"","version":"v2-beta"}},{"component":{"description":"For testing only!","name":"deis-logger"},"version":{"train":"","version":"v2-beta"}},{"component":{"description":"For testing only!","name":"deis-minio"},"version":{"train":"","version":"v2-beta"}},{"component":{"description":"For testing only!","name":"deis-monitor-grafana"},"version":{"train":"","version":"v2-beta"}},{"component":{"description":"For testing only!","name":"deis-monitor-influxdb"},"version":{"train":"","version":"v2-beta"}},{"component":{"description":"For testing only!","name":"deis-monitor-stdout"},"version":{"train":"","version":"v2-beta"}},{"component":{"description":"For testing only!","name":"deis-registry"},"version":{"train":"","version":"v2-beta"}},{"component":{"description":"For testing only!","name":"deis-router"},"version":{"train":"","version":"v2-beta"}},{"component":{"name":"deis-workflow-manager"},"version":{"train":""}}],"id":"4f0d9118-cfaa-4265-9335-cc31c6c7f15f"}
3 4f0d9118-cfaa-4265-9335-cc31c6c7f15f 2016-05-31 23:27:48 {"components":[{"component":{"description":"For testing only!","name":"deis-builder"},"version":{"train":"","version":"v2-beta"}},{"component":{"description":"For testing only!","name":"deis-controller"},"version":{"train":"","version":"v2-beta"}},{"component":{"description":"For testing only!","name":"deis-database"},"version":{"train":"","version":"v2-beta"}},{"component":{"description":"For testing only!","name":"deis-logger"},"version":{"train":"","version":"v2-beta"}},{"component":{"description":"For testing only!","name":"deis-minio"},"version":{"train":"","version":"v2-beta"}},{"component":{"description":"For testing only!","name":"deis-monitor-grafana"},"version":{"train":"","version":"v2-beta"}},{"component":{"description":"For testing only!","name":"deis-monitor-influxdb"},"version":{"train":"","version":"v2-beta"}},{"component":{"description":"For testing only!","name":"deis-monitor-stdout"},"version":{"train":"","version":"v2-beta"}},{"component":{"description":"For testing only!","name":"deis-registry"},"version":{"train":"","version":"v2-beta"}},{"component":{"description":"For testing only!","name":"deis-router"},"version":{"train":"","version":"v2-beta"}},{"component":{"name":"deis-workflow-manager"},"version":{"train":""}}],"id":"4f0d9118-cfaa-4265-9335-cc31c6c7f15f"}
\.


--
-- Name: clusters_checkins_checkins_id_seq; Type: SEQUENCE SET; Schema: public; Owner: dbuser
--

SELECT pg_catalog.setval('clusters_checkins_checkins_id_seq', 3, true);


--
-- Data for Name: versions; Type: TABLE DATA; Schema: public; Owner: dbuser
--

COPY versions (version_id, component_name, train, version, release_timestamp, data) FROM stdin;
45 deis-builder beta 2.0.0-rc1 2016-04-30 00:00:00 {"notes":"rc 1 release"}
46 deis-controller beta 2.0.0-rc1 2016-04-30 00:00:00 {"notes":"rc 1 release"}
47 deis-database beta 2.0.0-rc1 2016-04-30 00:00:00 {"notes":"rc 1 release"}
48 deis-logger beta 2.0.0-rc1 2016-04-30 00:00:00 {"notes":"rc 1 release"}
49 deis-logger-fluentd beta 2.0.0-rc1 2016-04-30 00:00:00 {"notes":"rc 1 release"}
50 deis-registry beta 2.0.0-rc1 2016-04-30 00:00:00 {"notes":"rc 1 release"}
51 deis-router beta 2.0.0-rc1 2016-04-30 00:00:00 {"notes":"rc 1 release"}
52 deis-workflow-manager beta 2.0.0-rc1 2016-04-30 00:00:00 {"notes":"rc 1 release"}
53 deis-minio beta 2.0.0-rc1 2016-04-30 00:00:00 {"notes":"rc 1 release"}
54 deis-monitor-grafana beta 2.0.0-rc1 2016-04-30 00:00:00 {"notes":"rc 1 release"}
55 deis-monitor-influxdb beta 2.0.0-rc1 2016-04-30 00:00:00 {"notes":"rc 1 release"}
56 deis-monitor-stdout beta 2.0.0-rc1 2016-04-30 00:00:00 {"notes":"rc 1 release"}
57 deis-monitor-telegraf beta 2.0.0-rc1 2016-04-30 00:00:00 {"notes":"rc 1 release"}
58 deis-builder beta 2.0.0-beta3 2016-04-28 00:00:00 {"notes":"beta 3 release"}
59 deis-controller beta 2.0.0-beta3 2016-04-28 00:00:00 {"notes":"beta 3 release"}
60 deis-database beta 2.0.0-beta3 2016-04-28 00:00:00 {"notes":"beta 3 release"}
61 deis-logger beta 2.0.0-beta3 2016-04-28 00:00:00 {"notes":"beta 3 release"}
62 deis-logger-fluentd beta 2.0.0-beta3 2016-04-28 00:00:00 {"notes":"beta 3 release"}
63 deis-registry beta 2.0.0-beta3 2016-04-28 00:00:00 {"notes":"beta 3 release"}
64 deis-router beta 2.0.0-beta3 2016-04-28 00:00:00 {"notes":"beta 3 release"}
65 deis-workflow-manager beta 2.0.0-beta3 2016-04-28 00:00:00 {"notes":"beta 3 release"}
66 deis-minio beta 2.0.0-beta3 2016-04-28 00:00:00 {"notes":"beta 3 release"}
67 deis-monitor-grafana beta 2.0.0-beta3 2016-04-28 00:00:00 {"notes":"beta 3 release"}
68 deis-monitor-influxdb beta 2.0.0-beta3 2016-04-28 00:00:00 {"notes":"beta 3 release"}
69 deis-monitor-stdout beta 2.0.0-beta3 2016-04-28 00:00:00 {"notes":"beta 3 release"}
71 deis-monitor-telegraf beta 2.0.0-beta3 2016-04-28 00:00:00 {"notes":"beta 3 release"}
\.


--
-- Name: versions_version_id_seq; Type: SEQUENCE SET; Schema: public; Owner: dbuser
--

SELECT pg_catalog.setval('versions_version_id_seq', 71, true);


--
-- Name: clusters_checkins_pkey; Type: CONSTRAINT; Schema: public; Owner: dbuser
--

ALTER TABLE ONLY clusters_checkins
ADD CONSTRAINT clusters_checkins_pkey PRIMARY KEY (checkins_id);


--
-- Name: clusters_pkey; Type: CONSTRAINT; Schema: public; Owner: dbuser
--

ALTER TABLE ONLY clusters
ADD CONSTRAINT clusters_pkey PRIMARY KEY (cluster_id);


--
-- Name: versions_component_name_train_version_key; Type: CONSTRAINT; Schema: public; Owner: dbuser
--

ALTER TABLE ONLY versions
ADD CONSTRAINT versions_component_name_train_version_key UNIQUE (component_name, train, version);


--
-- Name: versions_pkey; Type: CONSTRAINT; Schema: public; Owner: dbuser
--

ALTER TABLE ONLY versions
ADD CONSTRAINT versions_pkey PRIMARY KEY (version_id);


--
-- Name: public; Type: ACL; Schema: -; Owner: dbuser
--

REVOKE ALL ON SCHEMA public FROM PUBLIC;
REVOKE ALL ON SCHEMA public FROM dbuser;
GRANT ALL ON SCHEMA public TO dbuser;
GRANT ALL ON SCHEMA public TO PUBLIC;


--
-- PostgreSQL database dump complete
--

0 comments on commit 20cdeae

Please sign in to comment.