From eb339714f5326e18a155353a1a4fd067045b7a3b Mon Sep 17 00:00:00 2001 From: Daria Bialobrzeska <88393714+DariaKunoichi@users.noreply.github.com> Date: Wed, 22 Mar 2023 11:45:45 +0100 Subject: [PATCH] Filter expected metrics as well in CollectAndCompare (#1143) * Filter expected metrics as well in CollectAndCompare Signed-off-by: Daria Danilenko * Add testcase for multiple expected metrics Signed-off-by: Daria Danilenko * Change test values for filtering multiple expected metrics Signed-off-by: Daria Danilenko --------- Signed-off-by: Daria Danilenko --- prometheus/testutil/testutil.go | 1 + prometheus/testutil/testutil_test.go | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+) 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 {