@@ -2,20 +2,198 @@ package cmd
22
33import (
44 "bytes"
5+ "fmt"
6+ "net/http"
57 "testing"
68
79 "github.com/arschles/assert"
810 "github.com/deis/controller-sdk-go/api"
11+ "github.com/deis/workflow-cli/pkg/testutil"
912)
1013
1114func TestPrintHealthCheck (t * testing.T ) {
15+ t .Parallel ()
16+ cf , server , err := testutil .NewTestServerAndClient ()
17+ if err != nil {
18+ t .Fatal (err )
19+ }
20+ defer server .Close ()
1221 var b bytes.Buffer
22+ cmdr := DeisCmd {WOut : & b , ConfigFile : cf }
23+
1324 testHealthCheck := api.Healthchecks {}
14- printHealthCheck (& b , testHealthCheck )
25+ cmdr . printHealthCheck (testHealthCheck )
1526 assert .Equal (t , b .String (), "--- Liveness\n No liveness probe configured.\n \n --- Readiness\n No readiness probe configured.\n " , "healthcheck" )
1627 b .Reset ()
1728 testHealthCheck ["livenessProbe" ] = & api.Healthcheck {}
1829 testHealthCheck ["readinessProbe" ] = & api.Healthcheck {}
19- printHealthCheck (& b , testHealthCheck )
30+ cmdr . printHealthCheck (testHealthCheck )
2031 assert .Equal (t , b .String (), "--- Liveness\n Initial Delay (seconds): 0\n Timeout (seconds): 0\n Period (seconds): 0\n Success Threshold: 0\n Failure Threshold: 0\n Exec Probe: N/A\n HTTP GET Probe: N/A\n TCP Socket Probe: N/A\n \n --- Readiness\n Initial Delay (seconds): 0\n Timeout (seconds): 0\n Period (seconds): 0\n Success Threshold: 0\n Failure Threshold: 0\n Exec Probe: N/A\n HTTP GET Probe: N/A\n TCP Socket Probe: N/A\n " , "healthcheck" )
2132}
33+
34+ func TestHealthchecksList (t * testing.T ) {
35+ t .Parallel ()
36+ cf , server , err := testutil .NewTestServerAndClient ()
37+ if err != nil {
38+ t .Fatal (err )
39+ }
40+ defer server .Close ()
41+ var b bytes.Buffer
42+ cmdr := DeisCmd {WOut : & b , ConfigFile : cf }
43+
44+ server .Mux .HandleFunc ("/v2/apps/foo/config/" , func (w http.ResponseWriter , r * http.Request ) {
45+ testutil .SetHeaders (w )
46+ fmt .Fprintf (w , `{
47+ "uuid": "c039a380-6068-4511-b35a-535a73b86ef5",
48+ "app": "foo",
49+ "owner": "bar",
50+ "values": {},
51+ "memory": {},
52+ "cpu": {},
53+ "tags": {},
54+ "registry": {},
55+ "healthcheck": {
56+ "web/cmd": {
57+ "livenessProbe": {
58+ "initialDelaySeconds": 50,
59+ "timeoutSeconds": 50,
60+ "periodSeconds": 10,
61+ "failureThreshold": 3,
62+ "httpGet": {
63+ "port": 80,
64+ "path": "/"
65+ },
66+ "successThreshold": 1
67+ }
68+ }
69+ },
70+ "created": "2016-09-12T22:20:14Z",
71+ "updated": "2016-09-12T22:20:14Z"
72+ }` )
73+ })
74+
75+ err = cmdr .HealthchecksList ("foo" , "web/cmd" )
76+ assert .NoErr (t , err )
77+
78+ assert .Equal (t , b .String (), `=== foo Healthchecks
79+
80+ web/cmd:
81+ --- Liveness
82+ Initial Delay (seconds): 50
83+ Timeout (seconds): 50
84+ Period (seconds): 10
85+ Success Threshold: 1
86+ Failure Threshold: 3
87+ Exec Probe: N/A
88+ HTTP GET Probe: Path="/" Port=80 HTTPHeaders=[]
89+ TCP Socket Probe: N/A
90+
91+ --- Readiness
92+ No readiness probe configured.
93+ ` , "output" )
94+ }
95+
96+ func TestHealthchecksSet (t * testing.T ) {
97+ t .Parallel ()
98+ cf , server , err := testutil .NewTestServerAndClient ()
99+ if err != nil {
100+ t .Fatal (err )
101+ }
102+ defer server .Close ()
103+ var b bytes.Buffer
104+ cmdr := DeisCmd {WOut : & b , ConfigFile : cf }
105+
106+ server .Mux .HandleFunc ("/v2/apps/foo/config/" , func (w http.ResponseWriter , r * http.Request ) {
107+ testutil .SetHeaders (w )
108+ fmt .Fprintf (w , `{
109+ "uuid": "c039a380-6068-4511-b35a-535a73b86ef5",
110+ "app": "foo",
111+ "owner": "bar",
112+ "values": {},
113+ "memory": {},
114+ "cpu": {},
115+ "tags": {},
116+ "registry": {},
117+ "healthcheck": {
118+ "web/cmd": {
119+ "livenessProbe": {
120+ "initialDelaySeconds": 50,
121+ "timeoutSeconds": 50,
122+ "periodSeconds": 10,
123+ "failureThreshold": 3,
124+ "httpGet": {
125+ "port": 80,
126+ "path": "/"
127+ },
128+ "successThreshold": 1
129+ }
130+ }
131+ },
132+ "created": "2016-09-12T22:20:14Z",
133+ "updated": "2016-09-12T22:20:14Z"
134+ }` )
135+ })
136+
137+ err = cmdr .HealthchecksSet ("foo" , "liveness" , "web/cmd" , & api.Healthcheck {})
138+ assert .NoErr (t , err )
139+ assert .Equal (t , testutil .StripProgress (b .String ()), `Applying liveness healthcheck... done
140+
141+ === foo Healthchecks
142+
143+ web/cmd:
144+ --- Liveness
145+ Initial Delay (seconds): 50
146+ Timeout (seconds): 50
147+ Period (seconds): 10
148+ Success Threshold: 1
149+ Failure Threshold: 3
150+ Exec Probe: N/A
151+ HTTP GET Probe: Path="/" Port=80 HTTPHeaders=[]
152+ TCP Socket Probe: N/A
153+
154+ --- Readiness
155+ No readiness probe configured.
156+ ` , "output" )
157+ }
158+
159+ func TestHealthchecksUnset (t * testing.T ) {
160+ t .Parallel ()
161+ cf , server , err := testutil .NewTestServerAndClient ()
162+ if err != nil {
163+ t .Fatal (err )
164+ }
165+ defer server .Close ()
166+ var b bytes.Buffer
167+ cmdr := DeisCmd {WOut : & b , ConfigFile : cf }
168+
169+ server .Mux .HandleFunc ("/v2/apps/foo/config/" , func (w http.ResponseWriter , r * http.Request ) {
170+ testutil .SetHeaders (w )
171+ fmt .Fprintf (w , `{
172+ "uuid": "c039a380-6068-4511-b35a-535a73b86ef5",
173+ "app": "foo",
174+ "owner": "bar",
175+ "values": {},
176+ "memory": {},
177+ "cpu": {},
178+ "tags": {},
179+ "registry": {},
180+ "healthcheck": {},
181+ "created": "2016-09-12T22:20:14Z",
182+ "updated": "2016-09-12T22:20:14Z"
183+ }` )
184+ })
185+
186+ err = cmdr .HealthchecksUnset ("foo" , "web/cmd" , []string {"web/cmd" })
187+ assert .NoErr (t , err )
188+ assert .Equal (t , testutil .StripProgress (b .String ()), `Removing healthchecks... done
189+
190+ === foo Healthchecks
191+
192+ web/cmd:
193+ --- Liveness
194+ No liveness probe configured.
195+
196+ --- Readiness
197+ No readiness probe configured.
198+ ` , "output" )
199+ }
0 commit comments