diff --git a/prometheus/testutil/testutil.go b/prometheus/testutil/testutil.go index 91b83b5..82d4a54 100644 --- a/prometheus/testutil/testutil.go +++ b/prometheus/testutil/testutil.go @@ -238,6 +238,7 @@ func convertReaderToMetricFamily(reader io.Reader) ([]*dto.MetricFamily, error) func compareMetricFamilies(got, expected []*dto.MetricFamily, metricNames ...string) error { if metricNames != nil { got = filterMetrics(got, metricNames) + expected = filterMetrics(expected, metricNames) } return compare(got, expected) diff --git a/prometheus/testutil/testutil_test.go b/prometheus/testutil/testutil_test.go index 2a46e5d..8c8a1a4 100644 --- a/prometheus/testutil/testutil_test.go +++ b/prometheus/testutil/testutil_test.go @@ -331,6 +331,31 @@ func TestScrapeAndCompare(t *testing.T) { } } +func TestScrapeAndCompareWithMultipleExpected(t *testing.T) { + const expected = ` + # HELP some_total A value that represents a counter. + # TYPE some_total counter + + some_total{ label1 = "value1" } 1 + + # HELP some_total2 A value that represents a counter. + # TYPE some_total2 counter + + some_total2{ label2 = "value2" } 1 + ` + + expectedReader := strings.NewReader(expected) + + ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + fmt.Fprintln(w, expected) + })) + defer ts.Close() + + if err := ScrapeAndCompare(ts.URL, expectedReader, "some_total2"); err != nil { + t.Errorf("unexpected scraping result:\n%s", err) + } +} + func TestScrapeAndCompareFetchingFail(t *testing.T) { err := ScrapeAndCompare("some_url", strings.NewReader("some expectation"), "some_total") if err == nil {