Skip to content

Commit 086e293

Browse files
authored
Cloudwatch: Update Namespace Metrics and Dimensions tests, add missing dimensions (#218)
* test: namespace metrics and dimensions have same key set * fix: add missing keys to dimensions
1 parent 545b63a commit 086e293

File tree

2 files changed

+44
-6
lines changed

2 files changed

+44
-6
lines changed

pkg/cloudWatchConsts/metrics.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3338,6 +3338,7 @@ var NamespaceDimensionKeysMap = map[string][]string{
33383338
"AWS/ElasticMapReduce": {"ClusterId", "JobFlowId", "JobId"},
33393339
"AWS/EMRServerless": {"ApplicationId", "WorkerType", "CapacityAllocationType"},
33403340
"AWS/ElasticTranscoder": {"Operation", "PipelineId"},
3341+
"AWS/EventBridge/Pipes": {},
33413342
"AWS/Events": {"EventBusName", "EventSourceName", "RuleName"},
33423343
"AWS/FSx": {"FileSystemId"},
33433344
"AWS/Firehose": {"DeliveryStreamName"},
@@ -3353,6 +3354,7 @@ var NamespaceDimensionKeysMap = map[string][]string{
33533354
"AWS/IoTSiteWise": {"AccountId", "GatewayId", "PropertyGroup", "Reason", "SourceName", "StreamName", "ThrottledAt"},
33543355
"AWS/KMS": {"KeyId"},
33553356
"AWS/Kafka": {"Broker ID", "Cluster Name", "Consumer Group", "Topic"},
3357+
"AWS/KafkaConnect": {},
33563358
"AWS/Kendra": {"DataSourceId", "IndexId"},
33573359
"AWS/Kinesis": {"ShardId", "StreamName"},
33583360
"AWS/KinesisAnalytics": {"Application", "Flow", "Id", "Operator", "Parallelism", "Task"},

pkg/cloudWatchConsts/metrics_test.go

Lines changed: 42 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,48 @@ package cloudWatchConsts
22

33
import (
44
"fmt"
5+
"maps"
56
"slices"
67
"sort"
8+
"strings"
79
"testing"
810

911
"github.com/stretchr/testify/assert"
1012
)
1113

12-
// test to check NamespaceMetricsMap is sorted alphabetically
13-
func TestNamespaceMetricsMap(t *testing.T) {
14+
// test to check NamespaceMetricsMap metrics are sorted alphabetically
15+
func TestNamespaceMetricsAlphabetized(t *testing.T) {
1416
unsortedMetricNamespaces := namespacesWithUnsortedMetrics(NamespaceMetricsMap)
1517
if len(unsortedMetricNamespaces) != 0 {
1618
assert.Fail(t, "NamespaceMetricsMap is not sorted alphabetically. Please replace the printed services")
1719
printNamespacesThatNeedSorted(unsortedMetricNamespaces)
1820
}
1921
}
2022

23+
func TestNamespaceMetricKeysAllHaveDimensions(t *testing.T) {
24+
namespaceMetricsKeys := slices.Collect(maps.Keys(NamespaceMetricsMap))
25+
namespaceDimensionKeys := slices.Collect(maps.Keys(NamespaceDimensionKeysMap))
26+
27+
namespaceMetricsMissingKeys := findMetricKeysFromAMissingInB(namespaceDimensionKeys, namespaceMetricsKeys)
28+
29+
if len(namespaceMetricsMissingKeys) != 0 {
30+
assert.Fail(t, "NamespaceMetricsMap is missing key(s) from NamespaceDimensionKeysMap.")
31+
fmt.Println(strings.Join(namespaceMetricsMissingKeys, "\n"))
32+
}
33+
}
34+
35+
func TestNamespaceDimensionKeysAllHaveMetrics(t *testing.T) {
36+
namespaceMetricsKeys := slices.Collect(maps.Keys(NamespaceMetricsMap))
37+
namespaceDimensionKeys := slices.Collect(maps.Keys(NamespaceDimensionKeysMap))
38+
39+
namespaceDimensionMissingKeys := findMetricKeysFromAMissingInB(namespaceMetricsKeys, namespaceDimensionKeys)
40+
41+
if len(namespaceDimensionMissingKeys) != 0 {
42+
assert.Fail(t, "NamespaceDimensionKeysMap is missing key(s) from NamespaceMetricsMap.")
43+
fmt.Println(strings.Join(namespaceDimensionMissingKeys, "\n"))
44+
}
45+
}
46+
2147
func printNamespacesThatNeedSorted(unsortedMetricNamespaces []string) {
2248
slices.Sort(unsortedMetricNamespaces)
2349

@@ -37,10 +63,8 @@ func printNamespacesThatNeedSorted(unsortedMetricNamespaces []string) {
3763
// namespacesWithUnsortedMetrics returns which namespaces have unsorted metrics
3864
func namespacesWithUnsortedMetrics(NamespaceMetricsMap map[string][]string) []string {
3965
// Extract keys from the map and sort them
40-
keys := make([]string, 0, len(NamespaceMetricsMap))
41-
for k := range NamespaceMetricsMap {
42-
keys = append(keys, k)
43-
}
66+
keys := slices.Collect(maps.Keys(NamespaceMetricsMap))
67+
4468
sort.Strings(keys)
4569

4670
var unsortedNamespace []string
@@ -62,3 +86,15 @@ func namespacesWithUnsortedMetrics(NamespaceMetricsMap map[string][]string) []st
6286

6387
return unsortedNamespace
6488
}
89+
90+
func findMetricKeysFromAMissingInB(a []string, b []string) []string {
91+
var missingKeys []string
92+
93+
for i := range a {
94+
if !slices.Contains(b, a[i]) {
95+
missingKeys = append(missingKeys, a[i])
96+
}
97+
}
98+
99+
return missingKeys
100+
}

0 commit comments

Comments
 (0)