@@ -27,6 +27,7 @@ func TestRunSuite(t *testing.T) {
27
27
28
28
// Test Cases
29
29
var tests = []struct {
30
+ serverURL string
30
31
webServerStatus int
31
32
webServerResponse string
32
33
metric v1alpha1.Metric
@@ -172,62 +173,77 @@ func TestRunSuite(t *testing.T) {
172
173
expectedErrorMessage : "Could not parse JSON body: json: cannot unmarshal string into Go struct field datadogResponse.Series of type []struct { Pointlist [][]float64 \" json:\\ \" pointlist\\ \" \" }" ,
173
174
useEnvVarForKeys : false ,
174
175
},
176
+
177
+ // Error if server address is faulty
178
+ {
179
+ serverURL : "://wrong.schema" ,
180
+ metric : v1alpha1.Metric {},
181
+ expectedPhase : v1alpha1 .AnalysisPhaseError ,
182
+ expectedErrorMessage : "parse \" ://wrong.schema/api/v1/query\" : missing protocol scheme" ,
183
+ useEnvVarForKeys : false ,
184
+ },
175
185
}
176
186
177
187
// Run
178
188
179
189
for _ , test := range tests {
180
- // Server setup with response
181
- server := httptest .NewServer (http .HandlerFunc (func (rw http.ResponseWriter , req * http.Request ) {
190
+ serverURL := test .serverURL
182
191
183
- //Check query variables
184
- actualQuery := req .URL .Query ().Get ("query" )
185
- actualFrom := req .URL .Query ().Get ("from" )
186
- actualTo := req .URL .Query ().Get ("to" )
192
+ if serverURL == "" {
193
+ // Server setup with response
194
+ server := httptest .NewServer (http .HandlerFunc (func (rw http.ResponseWriter , req * http.Request ) {
187
195
188
- if actualQuery != "avg:kubernetes.cpu.user.total{*}" {
189
- t .Errorf ("\n query expected avg:kubernetes.cpu.user.total{*} but got %s" , actualQuery )
190
- }
196
+ //Check query variables
197
+ actualQuery := req .URL .Query ().Get ("query" )
198
+ actualFrom := req .URL .Query ().Get ("from" )
199
+ actualTo := req .URL .Query ().Get ("to" )
191
200
192
- if from , err := strconv .ParseInt (actualFrom , 10 , 64 ); err == nil && from != unixNow ()- test .expectedIntervalSeconds {
193
- t .Errorf ("\n from %d expected be equal to %d" , from , unixNow ()- test .expectedIntervalSeconds )
194
- } else if err != nil {
195
- t .Errorf ("\n failed to parse from: %v" , err )
196
- }
201
+ if actualQuery != "avg:kubernetes.cpu.user.total{*}" {
202
+ t .Errorf ("\n query expected avg:kubernetes.cpu.user.total{*} but got %s" , actualQuery )
203
+ }
197
204
198
- if to , err := strconv .ParseInt (actualTo , 10 , 64 ); err == nil && to != unixNow () {
199
- t .Errorf ("\n to %d was expected be equal to %d" , to , unixNow ())
200
- } else if err != nil {
201
- t .Errorf ("\n failed to parse to : %v" , err )
202
- }
205
+ if from , err := strconv .ParseInt (actualFrom , 10 , 64 ); err == nil && from != unixNow ()- test . expectedIntervalSeconds {
206
+ t .Errorf ("\n from %d expected be equal to %d" , from , unixNow ()- test . expectedIntervalSeconds )
207
+ } else if err != nil {
208
+ t .Errorf ("\n failed to parse from : %v" , err )
209
+ }
203
210
204
- //Check headers
205
- if req .Header .Get ("Content-Type" ) != "application/json" {
206
- t .Errorf ("\n Content-Type header expected to be application/json but got %s" , req .Header .Get ("Content-Type" ))
207
- }
208
- if req .Header .Get ("DD-API-KEY" ) != expectedApiKey {
209
- t .Errorf ("\n DD-API-KEY header expected %s but got %s" , expectedApiKey , req .Header .Get ("DD-API-KEY" ))
210
- }
211
- if req .Header .Get ("DD-APPLICATION-KEY" ) != expectedAppKey {
212
- t .Errorf ("\n DD-APPLICATION-KEY header expected %s but got %s" , expectedAppKey , req .Header .Get ("DD-APPLICATION-KEY" ))
213
- }
211
+ if to , err := strconv .ParseInt (actualTo , 10 , 64 ); err == nil && to != unixNow () {
212
+ t .Errorf ("\n to %d was expected be equal to %d" , to , unixNow ())
213
+ } else if err != nil {
214
+ t .Errorf ("\n failed to parse to: %v" , err )
215
+ }
214
216
215
- // Return mock response
216
- if test .webServerStatus < 200 || test .webServerStatus >= 300 {
217
- http .Error (rw , test .webServerResponse , test .webServerStatus )
218
- } else {
219
- rw .Header ().Set ("Content-Type" , "application/json" )
220
- io .WriteString (rw , test .webServerResponse )
221
- }
222
- }))
223
- defer server .Close ()
217
+ //Check headers
218
+ if req .Header .Get ("Content-Type" ) != "application/json" {
219
+ t .Errorf ("\n Content-Type header expected to be application/json but got %s" , req .Header .Get ("Content-Type" ))
220
+ }
221
+ if req .Header .Get ("DD-API-KEY" ) != expectedApiKey {
222
+ t .Errorf ("\n DD-API-KEY header expected %s but got %s" , expectedApiKey , req .Header .Get ("DD-API-KEY" ))
223
+ }
224
+ if req .Header .Get ("DD-APPLICATION-KEY" ) != expectedAppKey {
225
+ t .Errorf ("\n DD-APPLICATION-KEY header expected %s but got %s" , expectedAppKey , req .Header .Get ("DD-APPLICATION-KEY" ))
226
+ }
227
+
228
+ // Return mock response
229
+ if test .webServerStatus < 200 || test .webServerStatus >= 300 {
230
+ http .Error (rw , test .webServerResponse , test .webServerStatus )
231
+ } else {
232
+ rw .Header ().Set ("Content-Type" , "application/json" )
233
+ io .WriteString (rw , test .webServerResponse )
234
+ }
235
+ }))
236
+ defer server .Close ()
237
+
238
+ serverURL = server .URL
239
+ }
224
240
225
241
tokenSecret := & corev1.Secret {
226
242
ObjectMeta : metav1.ObjectMeta {
227
243
Name : DatadogTokensSecretName ,
228
244
},
229
245
Data : map [string ][]byte {
230
- "address" : []byte (server . URL ),
246
+ "address" : []byte (serverURL ),
231
247
"api-key" : []byte (expectedApiKey ),
232
248
"app-key" : []byte (expectedAppKey ),
233
249
},
@@ -236,7 +252,7 @@ func TestRunSuite(t *testing.T) {
236
252
if test .useEnvVarForKeys {
237
253
os .Setenv ("DD_API_KEY" , expectedApiKey )
238
254
os .Setenv ("DD_APP_KEY" , expectedAppKey )
239
- os .Setenv ("DD_ADDRESS" , server . URL )
255
+ os .Setenv ("DD_ADDRESS" , serverURL )
240
256
} else {
241
257
os .Unsetenv ("DD_API_KEY" )
242
258
os .Unsetenv ("DD_APP_KEY" )
0 commit comments