@@ -332,27 +332,46 @@ Diff:
332
332
}
333
333
334
334
func TestScrapeAndCompare (t * testing.T ) {
335
- const expected = `
335
+ scenarios := map [string ]struct {
336
+ want string
337
+ metricNames []string
338
+ errPrefix string
339
+ fail bool
340
+ }{
341
+ "empty metric Names" : {
342
+ want : `
336
343
# HELP some_total A value that represents a counter.
337
344
# TYPE some_total counter
338
345
339
346
some_total{ label1 = "value1" } 1
340
- `
347
+ ` ,
348
+ metricNames : []string {},
349
+ },
350
+ "one metric" : {
351
+ want : `
352
+ # HELP some_total A value that represents a counter.
353
+ # TYPE some_total counter
341
354
342
- expectedReader := strings .NewReader (expected )
355
+ some_total{ label1 = "value1" } 1
356
+ ` ,
357
+ metricNames : []string {"some_total" },
358
+ },
359
+ "multiple expected" : {
360
+ want : `
361
+ # HELP some_total A value that represents a counter.
362
+ # TYPE some_total counter
343
363
344
- ts := httptest .NewServer (http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
345
- fmt .Fprintln (w , expected )
346
- }))
347
- defer ts .Close ()
364
+ some_total{ label1 = "value1" } 1
348
365
349
- if err := ScrapeAndCompare (ts .URL , expectedReader , "some_total" ); err != nil {
350
- t .Errorf ("unexpected scraping result:\n %s" , err )
351
- }
352
- }
366
+ # HELP some_total2 A value that represents a counter.
367
+ # TYPE some_total2 counter
353
368
354
- func TestScrapeAndCompareWithMultipleExpected (t * testing.T ) {
355
- const expected = `
369
+ some_total2{ label2 = "value2" } 1
370
+ ` ,
371
+ metricNames : []string {"some_total2" },
372
+ },
373
+ "expected metric name is not scraped" : {
374
+ want : `
356
375
# HELP some_total A value that represents a counter.
357
376
# TYPE some_total counter
358
377
@@ -362,53 +381,80 @@ func TestScrapeAndCompareWithMultipleExpected(t *testing.T) {
362
381
# TYPE some_total2 counter
363
382
364
383
some_total2{ label2 = "value2" } 1
365
- `
366
-
367
- expectedReader := strings .NewReader (expected )
384
+ ` ,
385
+ metricNames : []string {"some_total3" },
386
+ errPrefix : "expected metrics name not found" ,
387
+ fail : true ,
388
+ },
389
+ "one of multiple expected metric names is not scraped" : {
390
+ want : `
391
+ # HELP some_total A value that represents a counter.
392
+ # TYPE some_total counter
368
393
369
- ts := httptest .NewServer (http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
370
- fmt .Fprintln (w , expected )
371
- }))
372
- defer ts .Close ()
394
+ some_total{ label1 = "value1" } 1
373
395
374
- if err := ScrapeAndCompare (ts .URL , expectedReader , "some_total2" ); err != nil {
375
- t .Errorf ("unexpected scraping result:\n %s" , err )
376
- }
377
- }
396
+ # HELP some_total2 A value that represents a counter.
397
+ # TYPE some_total2 counter
378
398
379
- func TestScrapeAndCompareFetchingFail (t * testing.T ) {
380
- err := ScrapeAndCompare ("some_url" , strings .NewReader ("some expectation" ), "some_total" )
381
- if err == nil {
382
- t .Errorf ("expected an error but got nil" )
399
+ some_total2{ label2 = "value2" } 1
400
+ ` ,
401
+ metricNames : []string {"some_total1" , "some_total3" },
402
+ errPrefix : "expected metrics name not found" ,
403
+ fail : true ,
404
+ },
383
405
}
384
- if ! strings .HasPrefix (err .Error (), "scraping metrics failed" ) {
385
- t .Errorf ("unexpected error happened: %s" , err )
406
+ for name , scenario := range scenarios {
407
+ t .Run (name , func (t * testing.T ) {
408
+ expectedReader := strings .NewReader (scenario .want )
409
+
410
+ ts := httptest .NewServer (http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
411
+ fmt .Fprintln (w , scenario .want )
412
+ }))
413
+ defer ts .Close ()
414
+ if err := ScrapeAndCompare (ts .URL , expectedReader , scenario .metricNames ... ); err != nil {
415
+ if ! scenario .fail || ! strings .HasPrefix (err .Error (), scenario .errPrefix ) {
416
+ t .Errorf ("unexpected error happened: %s" , err )
417
+ }
418
+ } else if scenario .fail {
419
+ t .Errorf ("expected an error but got nil" )
420
+ }
421
+ })
386
422
}
387
- }
388
423
389
- func TestScrapeAndCompareBadStatusCode (t * testing.T ) {
390
- const expected = `
424
+ t .Run ("fetching fail" , func (t * testing.T ) {
425
+ err := ScrapeAndCompare ("some_url" , strings .NewReader ("some expectation" ), "some_total" )
426
+ if err == nil {
427
+ t .Errorf ("expected an error but got nil" )
428
+ }
429
+ if ! strings .HasPrefix (err .Error (), "scraping metrics failed" ) {
430
+ t .Errorf ("unexpected error happened: %s" , err )
431
+ }
432
+ })
433
+
434
+ t .Run ("bad status code" , func (t * testing.T ) {
435
+ const expected = `
391
436
# HELP some_total A value that represents a counter.
392
437
# TYPE some_total counter
393
438
394
439
some_total{ label1 = "value1" } 1
395
440
`
396
441
397
- expectedReader := strings .NewReader (expected )
442
+ expectedReader := strings .NewReader (expected )
398
443
399
- ts := httptest .NewServer (http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
400
- w .WriteHeader (http .StatusBadGateway )
401
- fmt .Fprintln (w , expected )
402
- }))
403
- defer ts .Close ()
444
+ ts := httptest .NewServer (http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
445
+ w .WriteHeader (http .StatusBadGateway )
446
+ fmt .Fprintln (w , expected )
447
+ }))
448
+ defer ts .Close ()
404
449
405
- err := ScrapeAndCompare (ts .URL , expectedReader , "some_total" )
406
- if err == nil {
407
- t .Errorf ("expected an error but got nil" )
408
- }
409
- if ! strings .HasPrefix (err .Error (), "the scraping target returned a status code other than 200" ) {
410
- t .Errorf ("unexpected error happened: %s" , err )
411
- }
450
+ err := ScrapeAndCompare (ts .URL , expectedReader , "some_total" )
451
+ if err == nil {
452
+ t .Errorf ("expected an error but got nil" )
453
+ }
454
+ if ! strings .HasPrefix (err .Error (), "the scraping target returned a status code other than 200" ) {
455
+ t .Errorf ("unexpected error happened: %s" , err )
456
+ }
457
+ })
412
458
}
413
459
414
460
func TestCollectAndCount (t * testing.T ) {
0 commit comments