Skip to content

Commit 20cdeae

Browse files
author
Vaughn Dice
committed
Merge pull request #144 from vdice/add-testing-notes
doc(testing-notes.md): add testing notes, test data
2 parents 463a30f + ac9e0b3 commit 20cdeae

File tree

2 files changed

+328
-0
lines changed

2 files changed

+328
-0
lines changed

doc/testing-notes.md

+82
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
# Testing Locally
2+
3+
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).
4+
5+
Here we provide the dependencies and steps needed to do so.
6+
7+
## Dependencies
8+
9+
- [AWS][aws] credentials/ability to launch a (free tier) [RDS instance][rds]
10+
- [psql](https://www.postgresql.org/docs/9.2/static/app-psql.html)
11+
- a running [Deis Workflow](https://github.com/deis/workflow/blob/master/src/installing-workflow/index.md) cluster...
12+
- installed on a [Kubernetes](http://kubernetes.io/) cluster
13+
14+
## Steps
15+
16+
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:
17+
18+
- RDS instance name: `rdsinstance`
19+
- db name `dbname`*
20+
- db user name `dbuser`
21+
- db password `dbpass`
22+
23+
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.
24+
25+
\**AWS will let you create an instance with db name blank, so don't forget to populate it with a value.*
26+
27+
28+
2. Once the instance status is `Available`, we can seed `dbname` with test data:
29+
30+
```console
31+
psql \
32+
-f /path/to/test_data.sql \
33+
--host <rds endpoint> \
34+
--port 5432 \
35+
--username dbuser \
36+
--dbname dbname
37+
```
38+
39+
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:
40+
41+
```console
42+
export
43+
export DEIS_CONTROLLER_URL=http://deis.${ROUTABLE_IP}.nip.io
44+
deis auth:register $DEIS_CONTROLLER_URL
45+
deis apps:create --no-remote wfm-api
46+
deis config:set \
47+
AWS_SECRET_ACCESS_KEY="${AWS_SECRET_ACCESS_KEY}" \
48+
AWS_ACCESS_KEY_ID="${AWS_ACCESS_KEY_ID}" \
49+
WORKFLOW_MANAGER_API_RDS_REGION=“${RDS_REGION}" \
50+
WORKFLOW_MANAGER_API_DBINSTANCE=“${RDS_INSTANCE_NAME}" \
51+
WORKFLOW_MANAGER_API_DBUSER=“${DBUSER}" \
52+
WORKFLOW_MANAGER_API_DBPASS=“${DBPASS}" \
53+
WORKFLOW_MANAGER_API_PORT=8081 \
54+
-a wfm-api
55+
deis pull quay.io/deisci/workflow-manager-api:canary -a wfm-api
56+
# optionally, specify org/workflow-manager-api:tag
57+
# to test a different wfm-api version, provided the image is
58+
# publicly accessible
59+
```
60+
61+
Let's verify that our wfm-api app is healthy. The following should return the current cluster count, depending on `test_data.sql` provided:
62+
63+
`curl http://wfm-api.${ROUTABLE_IP}.nip.io/v3/clusters/count`
64+
65+
4. Update the existing `deis-workflow-manager` pod to point to our local wfm-api app:
66+
67+
```console
68+
kubectl edit rc deis-workflow-manager —namespace=deis
69+
# update VERSIONS_API_URL to point to local wfm-api endpoint:
70+
# http://wfm-api.${ROUTABLE_IP}.nip.io
71+
# optionally, can also specify a different workflow-manager
72+
# image, provided it is publicly accessible
73+
kubectl scale rc deis-workflow-manager —namespace=deis —replicas=0
74+
kubectl scale rc deis-workflow-manager —namespace=deis —replicas=1
75+
```
76+
77+
The following should now return the previous cluster count incremented by 1 thanks to our newly reporting `deis-workflow-manager` pod:
78+
79+
`curl http://wfm-api.${ROUTABLE_IP}.nip.io/v3/clusters/count`
80+
81+
[aws]: https://aws.amazon.com/
82+
[rds]: https://aws.amazon.com/rds/

test_data/test_data.sql

+246
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,246 @@
1+
--
2+
-- PostgreSQL database dump
3+
--
4+
5+
-- Dumped from database version 9.4.7
6+
-- Dumped by pg_dump version 9.5.2
7+
8+
SET statement_timeout = 0;
9+
SET lock_timeout = 0;
10+
SET client_encoding = 'UTF8';
11+
SET standard_conforming_strings = on;
12+
SET check_function_bodies = false;
13+
SET client_min_messages = warning;
14+
SET row_security = off;
15+
16+
--
17+
-- Name: plpgsql; Type: EXTENSION; Schema: -; Owner:
18+
--
19+
20+
CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog;
21+
22+
23+
--
24+
-- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner:
25+
--
26+
27+
COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language';
28+
29+
30+
SET search_path = public, pg_catalog;
31+
32+
SET default_tablespace = '';
33+
34+
SET default_with_oids = false;
35+
36+
--
37+
-- Name: clusters; Type: TABLE; Schema: public; Owner: dbuser
38+
--
39+
40+
CREATE TABLE IF NOT EXISTS clusters (
41+
cluster_id uuid NOT NULL,
42+
data json
43+
);
44+
45+
46+
ALTER TABLE clusters OWNER TO dbuser;
47+
48+
--
49+
-- Name: clusters_checkins; Type: TABLE; Schema: public; Owner: dbuser
50+
--
51+
52+
CREATE TABLE IF NOT EXISTS clusters_checkins (
53+
checkins_id bigint NOT NULL,
54+
cluster_id uuid,
55+
created_at timestamp without time zone,
56+
data json
57+
);
58+
59+
60+
ALTER TABLE clusters_checkins OWNER TO dbuser;
61+
62+
--
63+
-- Name: clusters_checkins_checkins_id_seq; Type: SEQUENCE; Schema: public; Owner: dbuser
64+
--
65+
66+
CREATE SEQUENCE clusters_checkins_checkins_id_seq
67+
START WITH 1
68+
INCREMENT BY 1
69+
NO MINVALUE
70+
NO MAXVALUE
71+
CACHE 1;
72+
73+
74+
ALTER TABLE clusters_checkins_checkins_id_seq OWNER TO dbuser;
75+
76+
--
77+
-- Name: clusters_checkins_checkins_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: dbuser
78+
--
79+
80+
ALTER SEQUENCE clusters_checkins_checkins_id_seq OWNED BY clusters_checkins.checkins_id;
81+
82+
83+
--
84+
-- Name: versions; Type: TABLE; Schema: public; Owner: dbuser
85+
--
86+
87+
CREATE TABLE IF NOT EXISTS versions (
88+
version_id bigint NOT NULL,
89+
component_name character varying(32),
90+
train character varying(24),
91+
version character varying(32),
92+
release_timestamp timestamp without time zone,
93+
data json
94+
);
95+
96+
97+
ALTER TABLE versions OWNER TO dbuser;
98+
99+
--
100+
-- Name: versions_version_id_seq; Type: SEQUENCE; Schema: public; Owner: dbuser
101+
--
102+
103+
CREATE SEQUENCE versions_version_id_seq
104+
START WITH 1
105+
INCREMENT BY 1
106+
NO MINVALUE
107+
NO MAXVALUE
108+
CACHE 1;
109+
110+
111+
ALTER TABLE versions_version_id_seq OWNER TO dbuser;
112+
113+
--
114+
-- Name: versions_version_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: dbuser
115+
--
116+
117+
ALTER SEQUENCE versions_version_id_seq OWNED BY versions.version_id;
118+
119+
120+
--
121+
-- Name: checkins_id; Type: DEFAULT; Schema: public; Owner: dbuser
122+
--
123+
124+
ALTER TABLE ONLY clusters_checkins ALTER COLUMN checkins_id SET DEFAULT nextval('clusters_checkins_checkins_id_seq'::regclass);
125+
126+
127+
--
128+
-- Name: version_id; Type: DEFAULT; Schema: public; Owner: dbuser
129+
--
130+
131+
ALTER TABLE ONLY versions ALTER COLUMN version_id SET DEFAULT nextval('versions_version_id_seq'::regclass);
132+
133+
134+
--
135+
-- Data for Name: clusters; Type: TABLE DATA; Schema: public; Owner: dbuser
136+
--
137+
138+
COPY clusters (cluster_id, data) FROM stdin;
139+
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"}
140+
\.
141+
142+
143+
--
144+
-- Data for Name: clusters_checkins; Type: TABLE DATA; Schema: public; Owner: dbuser
145+
--
146+
147+
COPY clusters_checkins (checkins_id, cluster_id, created_at, data) FROM stdin;
148+
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"}
149+
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"}
150+
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"}
151+
\.
152+
153+
154+
--
155+
-- Name: clusters_checkins_checkins_id_seq; Type: SEQUENCE SET; Schema: public; Owner: dbuser
156+
--
157+
158+
SELECT pg_catalog.setval('clusters_checkins_checkins_id_seq', 3, true);
159+
160+
161+
--
162+
-- Data for Name: versions; Type: TABLE DATA; Schema: public; Owner: dbuser
163+
--
164+
165+
COPY versions (version_id, component_name, train, version, release_timestamp, data) FROM stdin;
166+
45 deis-builder beta 2.0.0-rc1 2016-04-30 00:00:00 {"notes":"rc 1 release"}
167+
46 deis-controller beta 2.0.0-rc1 2016-04-30 00:00:00 {"notes":"rc 1 release"}
168+
47 deis-database beta 2.0.0-rc1 2016-04-30 00:00:00 {"notes":"rc 1 release"}
169+
48 deis-logger beta 2.0.0-rc1 2016-04-30 00:00:00 {"notes":"rc 1 release"}
170+
49 deis-logger-fluentd beta 2.0.0-rc1 2016-04-30 00:00:00 {"notes":"rc 1 release"}
171+
50 deis-registry beta 2.0.0-rc1 2016-04-30 00:00:00 {"notes":"rc 1 release"}
172+
51 deis-router beta 2.0.0-rc1 2016-04-30 00:00:00 {"notes":"rc 1 release"}
173+
52 deis-workflow-manager beta 2.0.0-rc1 2016-04-30 00:00:00 {"notes":"rc 1 release"}
174+
53 deis-minio beta 2.0.0-rc1 2016-04-30 00:00:00 {"notes":"rc 1 release"}
175+
54 deis-monitor-grafana beta 2.0.0-rc1 2016-04-30 00:00:00 {"notes":"rc 1 release"}
176+
55 deis-monitor-influxdb beta 2.0.0-rc1 2016-04-30 00:00:00 {"notes":"rc 1 release"}
177+
56 deis-monitor-stdout beta 2.0.0-rc1 2016-04-30 00:00:00 {"notes":"rc 1 release"}
178+
57 deis-monitor-telegraf beta 2.0.0-rc1 2016-04-30 00:00:00 {"notes":"rc 1 release"}
179+
58 deis-builder beta 2.0.0-beta3 2016-04-28 00:00:00 {"notes":"beta 3 release"}
180+
59 deis-controller beta 2.0.0-beta3 2016-04-28 00:00:00 {"notes":"beta 3 release"}
181+
60 deis-database beta 2.0.0-beta3 2016-04-28 00:00:00 {"notes":"beta 3 release"}
182+
61 deis-logger beta 2.0.0-beta3 2016-04-28 00:00:00 {"notes":"beta 3 release"}
183+
62 deis-logger-fluentd beta 2.0.0-beta3 2016-04-28 00:00:00 {"notes":"beta 3 release"}
184+
63 deis-registry beta 2.0.0-beta3 2016-04-28 00:00:00 {"notes":"beta 3 release"}
185+
64 deis-router beta 2.0.0-beta3 2016-04-28 00:00:00 {"notes":"beta 3 release"}
186+
65 deis-workflow-manager beta 2.0.0-beta3 2016-04-28 00:00:00 {"notes":"beta 3 release"}
187+
66 deis-minio beta 2.0.0-beta3 2016-04-28 00:00:00 {"notes":"beta 3 release"}
188+
67 deis-monitor-grafana beta 2.0.0-beta3 2016-04-28 00:00:00 {"notes":"beta 3 release"}
189+
68 deis-monitor-influxdb beta 2.0.0-beta3 2016-04-28 00:00:00 {"notes":"beta 3 release"}
190+
69 deis-monitor-stdout beta 2.0.0-beta3 2016-04-28 00:00:00 {"notes":"beta 3 release"}
191+
71 deis-monitor-telegraf beta 2.0.0-beta3 2016-04-28 00:00:00 {"notes":"beta 3 release"}
192+
\.
193+
194+
195+
--
196+
-- Name: versions_version_id_seq; Type: SEQUENCE SET; Schema: public; Owner: dbuser
197+
--
198+
199+
SELECT pg_catalog.setval('versions_version_id_seq', 71, true);
200+
201+
202+
--
203+
-- Name: clusters_checkins_pkey; Type: CONSTRAINT; Schema: public; Owner: dbuser
204+
--
205+
206+
ALTER TABLE ONLY clusters_checkins
207+
ADD CONSTRAINT clusters_checkins_pkey PRIMARY KEY (checkins_id);
208+
209+
210+
--
211+
-- Name: clusters_pkey; Type: CONSTRAINT; Schema: public; Owner: dbuser
212+
--
213+
214+
ALTER TABLE ONLY clusters
215+
ADD CONSTRAINT clusters_pkey PRIMARY KEY (cluster_id);
216+
217+
218+
--
219+
-- Name: versions_component_name_train_version_key; Type: CONSTRAINT; Schema: public; Owner: dbuser
220+
--
221+
222+
ALTER TABLE ONLY versions
223+
ADD CONSTRAINT versions_component_name_train_version_key UNIQUE (component_name, train, version);
224+
225+
226+
--
227+
-- Name: versions_pkey; Type: CONSTRAINT; Schema: public; Owner: dbuser
228+
--
229+
230+
ALTER TABLE ONLY versions
231+
ADD CONSTRAINT versions_pkey PRIMARY KEY (version_id);
232+
233+
234+
--
235+
-- Name: public; Type: ACL; Schema: -; Owner: dbuser
236+
--
237+
238+
REVOKE ALL ON SCHEMA public FROM PUBLIC;
239+
REVOKE ALL ON SCHEMA public FROM dbuser;
240+
GRANT ALL ON SCHEMA public TO dbuser;
241+
GRANT ALL ON SCHEMA public TO PUBLIC;
242+
243+
244+
--
245+
-- PostgreSQL database dump complete
246+
--

0 commit comments

Comments
 (0)