func assertMetricLabels()

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
}