Compare text strings directly in testutil
Signed-off-by: PhilipGough <philip.p.gough@gmail.com>
This commit is contained in:
parent
30503fe98e
commit
f9739b3d97
|
@ -138,20 +138,13 @@ func GatherAndCompare(g prometheus.Gatherer, expected io.Reader, metricNames ...
|
|||
}
|
||||
want := internal.NormalizeMetricFamilies(wantRaw)
|
||||
|
||||
if len(got) != len(want) {
|
||||
return notMatchingError(got, want)
|
||||
}
|
||||
for i := range got {
|
||||
if got[i].String() != want[i].String() {
|
||||
return notMatchingError(got, want)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
return compare(got, want)
|
||||
}
|
||||
|
||||
// notMatchingError encodes both provided slices of metric families into the
|
||||
// text format and creates a readable error message from the result.
|
||||
func notMatchingError(got, want []*dto.MetricFamily) error {
|
||||
// compare encodes both provided slices of metric families into the text format,
|
||||
// compares their string message, and returns an error if they do not match.
|
||||
// The error contains the encoded text, of both the desired, and actual result.
|
||||
func compare(got, want []*dto.MetricFamily) error {
|
||||
var gotBuf, wantBuf bytes.Buffer
|
||||
enc := expfmt.NewEncoder(&gotBuf, expfmt.FmtText)
|
||||
for _, mf := range got {
|
||||
|
@ -166,6 +159,7 @@ func notMatchingError(got, want []*dto.MetricFamily) error {
|
|||
}
|
||||
}
|
||||
|
||||
if wantBuf.String() != gotBuf.String() {
|
||||
return fmt.Errorf(`
|
||||
metric output does not match expectation; want:
|
||||
|
||||
|
@ -175,6 +169,9 @@ got:
|
|||
|
||||
%s
|
||||
`, wantBuf.String(), gotBuf.String())
|
||||
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func filterMetrics(metrics []*dto.MetricFamily, names []string) []*dto.MetricFamily {
|
||||
|
|
Loading…
Reference in New Issue