Skip to content

Commit

Permalink
Compare metric descriptions at the Prometheus matcher
Browse files Browse the repository at this point in the history
  • Loading branch information
frodenas committed Dec 23, 2017
1 parent ef96f16 commit 81fb3d6
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 8 deletions.
22 changes: 16 additions & 6 deletions utils/test_matchers/prometheus_metric_matcher.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,14 @@ func PrometheusMetric(expected prometheus.Metric) types.GomegaMatcher {
expected.Write(expectedMetric)

return &PrometheusMetricMatcher{
Expected: expectedMetric,
Desc: expected.Desc(),
Metric: expectedMetric,
}
}

type PrometheusMetricMatcher struct {
Expected *dto.Metric
Desc *prometheus.Desc
Metric *dto.Metric
}

func (matcher *PrometheusMetricMatcher) Match(actual interface{}) (success bool, err error) {
Expand All @@ -33,20 +35,28 @@ func (matcher *PrometheusMetricMatcher) Match(actual interface{}) (success bool,
actualMetric := &dto.Metric{}
metric.Write(actualMetric)

return reflect.DeepEqual(actualMetric.String(), matcher.Expected.String()), nil
if !reflect.DeepEqual(metric.Desc().String(), matcher.Desc.String()) {
return false, nil
}

return reflect.DeepEqual(actualMetric.String(), matcher.Metric.String()), nil
}

func (matcher *PrometheusMetricMatcher) FailureMessage(actual interface{}) (message string) {
metric, ok := actual.(prometheus.Metric)
if ok {
actualMetric := &dto.Metric{}
metric.Write(actualMetric)
return format.Message(actualMetric.String(), "to equal", matcher.Expected.String())
return format.Message(
fmt.Sprintf("\n%s\nMetric{%s}", metric.Desc().String(), actualMetric.String()),
"to equal",
fmt.Sprintf("\n%s\nMetric{%s}", matcher.Desc.String(), matcher.Metric.String()),
)
}

return format.Message(actual, "to equal", matcher.Expected)
return format.Message(actual, "to equal", matcher)
}

func (matcher *PrometheusMetricMatcher) NegatedFailureMessage(actual interface{}) (message string) {
return format.Message(actual, "not to equal", matcher.Expected)
return format.Message(actual, "not to equal", matcher)
}
4 changes: 2 additions & 2 deletions utils/test_matchers/prometheus_metric_matcher_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,7 @@ var _ = Describe("PrometheusMetric", func() {
)
actualMetric.WithLabelValues(metricLabelValue).Observe(float64(1))

Expect(expectedMetric.WithLabelValues(metricLabelValue)).To(PrometheusMetric(actualMetric.WithLabelValues(metricLabelValue)))
Expect(expectedMetric.WithLabelValues(metricLabelValue)).To(PrometheusMetric(actualMetric.MetricVec.WithLabelValues(metricLabelValue)))
})
})

Expand Down Expand Up @@ -241,7 +241,7 @@ var _ = Describe("PrometheusMetric", func() {
)
actualMetric.WithLabelValues(metricLabelValue).Observe(float64(1))

Expect(expectedMetric.WithLabelValues(metricLabelValue)).To(PrometheusMetric(actualMetric.WithLabelValues(metricLabelValue)))
Expect(expectedMetric.WithLabelValues(metricLabelValue)).To(PrometheusMetric(actualMetric.MetricVec.WithLabelValues(metricLabelValue)))
})
})
})

0 comments on commit 81fb3d6

Please sign in to comment.