in integration_test/metadata/integration_metadata.go [239:274]
func assertMetricLabels(metric *ExpectedMetric, series *monitoringpb.TimeSeries) error {
var err error
// Only expected labels must be present
expectedLabels := make(map[string]bool)
for _, expectedLabel := range metric.Labels {
expectedLabels[expectedLabel.Name] = true
}
for actualLabel, actualValue := range series.Metric.Labels {
if !expectedLabels[actualLabel] {
err = multierr.Append(err, fmt.Errorf("got unexpected label %q with value %q", actualLabel, actualValue))
}
}
// All expected labels must be present and match the given pattern
for _, expectedLabel := range metric.Labels {
actualValue, ok := series.Metric.Labels[expectedLabel.Name]
if !ok {
err = multierr.Append(err, fmt.Errorf("expected label not found: %s", expectedLabel))
continue
}
match, matchErr := regexp.MatchString(fmt.Sprintf("^(?:%s)$", expectedLabel.ValueRegex), actualValue)
if matchErr != nil {
err = multierr.Append(err, fmt.Errorf("error parsing pattern. label=%s, pattern=%s, err=%v",
expectedLabel.Name,
expectedLabel.ValueRegex,
matchErr,
))
} else if !match {
err = multierr.Append(err, fmt.Errorf("error: label value does not match pattern. label=%s, pattern=%s, value=%s",
expectedLabel.Name,
expectedLabel.ValueRegex,
actualValue,
))
}
}
return err
}