Skip to content

Commit 8e85d13

Browse files
Add test for metrics prefix sanitization
Signed-off-by: Edwin Mackenzie-Owen <[email protected]>
1 parent 4ae8653 commit 8e85d13

File tree

2 files changed

+40
-4
lines changed

2 files changed

+40
-4
lines changed

stackdriver_exporter.go

+3-4
Original file line numberDiff line numberDiff line change
@@ -304,7 +304,8 @@ func main() {
304304

305305
level.Info(logger).Log("msg", "Using Google Cloud Project IDs", "projectIDs", fmt.Sprintf("%v", projectIDs))
306306

307-
metricsTypePrefixes := parseMetricTypePrefixes()
307+
inputPrefixes := strings.Split(*monitoringMetricsTypePrefixes, ",")
308+
metricsTypePrefixes := parseMetricTypePrefixes(inputPrefixes)
308309
metricExtraFilters := parseMetricExtraFilters()
309310

310311
if *metricsPath == *stackdriverMetricsPath {
@@ -354,9 +355,7 @@ func main() {
354355
}
355356
}
356357

357-
func parseMetricTypePrefixes() (metricTypePrefixes []string) {
358-
inputPrefixes := strings.Split(*monitoringMetricsTypePrefixes, ",")
359-
358+
func parseMetricTypePrefixes(inputPrefixes []string) (metricTypePrefixes []string) {
360359
// only keep unique prefixes
361360
uniqueKeys := make(map[string]bool)
362361
uniquePrefixes := []string{}

stackdriver_exporter_test.go

+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
// Copyright 2020 The Prometheus Authors
2+
// Licensed under the Apache License, Version 2.0 (the "License");
3+
// you may not use this file except in compliance with the License.
4+
// You may obtain a copy of the License at
5+
//
6+
// http://www.apache.org/licenses/LICENSE-2.0
7+
//
8+
// Unless required by applicable law or agreed to in writing, software
9+
// distributed under the License is distributed on an "AS IS" BASIS,
10+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11+
// See the License for the specific language governing permissions and
12+
// limitations under the License.
13+
14+
package main
15+
16+
import "testing"
17+
import "reflect"
18+
19+
func TestParseMetricTypePrefixes(t *testing.T) {
20+
inputPrefixes := []string{
21+
"redis.googleapis.com/stats/memory/usage",
22+
"loadbalancing.googleapis.com/https/request_count",
23+
"loadbalancing.googleapis.com",
24+
"redis.googleapis.com/stats/memory/usage_ratio",
25+
"redis.googleapis.com/stats/memory/usage_ratio",
26+
}
27+
expectedOutputPrefixes := []string{
28+
"loadbalancing.googleapis.com",
29+
"redis.googleapis.com/stats/memory/usage",
30+
}
31+
32+
outputPrefixes := parseMetricTypePrefixes(inputPrefixes)
33+
34+
if !reflect.DeepEqual(outputPrefixes, expectedOutputPrefixes) {
35+
t.Errorf("Metric type prefix sanitization did not produce expected output. Expected:\n%s\nGot:\n%s", expectedOutputPrefixes, outputPrefixes)
36+
}
37+
}

0 commit comments

Comments
 (0)