feat(prometheus/testutil/promlint/validations): refine lintMetricTypeInName

Change the lintMetricTypeInName linter inside promlint to only trigger an error when the metric name matches the type of the metric.

Signed-off-by: foehammer127 <foehammer@disroot.org>
This commit is contained in:
foehammer127 2024-02-28 17:21:23 -06:00
parent 14259fa70c
commit cead7c3bb2
No known key found for this signature in database
GPG Key ID: 15CB89F2F60313E7
2 changed files with 13 additions and 14 deletions

View File

@ -668,7 +668,6 @@ func TestLintMetricTypeInName(t *testing.T) {
twoProbTest, twoProbTest,
genTest("instance_memory_limit_bytes_gauge", "gauge", "gauge"), genTest("instance_memory_limit_bytes_gauge", "gauge", "gauge"),
genTest("request_duration_seconds_summary", "summary", "summary"), genTest("request_duration_seconds_summary", "summary", "summary"),
genTest("request_duration_seconds_summary", "histogram", "summary"),
genTest("request_duration_seconds_histogram", "histogram", "histogram"), genTest("request_duration_seconds_histogram", "histogram", "histogram"),
genTest("request_duration_seconds_HISTOGRAM", "histogram", "histogram"), genTest("request_duration_seconds_HISTOGRAM", "histogram", "histogram"),

View File

@ -44,21 +44,21 @@ func LintMetricUnits(mf *dto.MetricFamily) []error {
return problems return problems
} }
// LintMetricTypeInName detects when metric types are included in the metric name. // LintMetricTypeInName detects when the metric type is included in the metric name.
func LintMetricTypeInName(mf *dto.MetricFamily) []error { func LintMetricTypeInName(mf *dto.MetricFamily) []error {
var problems []error if mf.GetType() == dto.MetricType_UNTYPED {
n := strings.ToLower(mf.GetName()) return nil
for i, t := range dto.MetricType_name {
if i == int32(dto.MetricType_UNTYPED) {
continue
} }
typename := strings.ToLower(t) var problems []error
n := strings.ToLower(mf.GetName())
typename := strings.ToLower(mf.GetType().String())
if strings.Contains(n, "_"+typename+"_") || strings.HasSuffix(n, "_"+typename) { if strings.Contains(n, "_"+typename+"_") || strings.HasSuffix(n, "_"+typename) {
problems = append(problems, fmt.Errorf(`metric name should not include type '%s'`, typename)) problems = append(problems, fmt.Errorf(`metric name should not include type '%s'`, typename))
} }
}
return problems return problems
} }