github.com/galamsiva2020/kubernetes-heapster-monitoring@v0.0.0-20210823134957-3c1baa7c1e70/metrics/sinks/statsd/etsystatsd_formatter_test.go (about) 1 // Copyright 2016 Google Inc. All Rights Reserved. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 package statsd 16 17 import ( 18 "fmt" 19 "github.com/stretchr/testify/assert" 20 "k8s.io/heapster/metrics/core" 21 "testing" 22 ) 23 24 var ( 25 etsyPrefix = "testprefix" 26 etsyMetricName = "testmetric" 27 etsyHostName = "testhost" 28 etsyNamespace = "testnamespace" 29 etsyPodName = "testpodname" 30 etsyContainerName = "testcontainername" 31 etsyResourceName = "testresource" 32 etsyUserLabels = "test_tag_1:val1,test_tag_2:val2,test_tag_3:val3" 33 expectedLowerCamelLabels = "testTag1.val1.testTag2.val2.testTag3.val3" 34 expectedUpperCamelLabels = "TestTag1.val1.TestTag2.val2.TestTag3.val3" 35 ) 36 37 var etsyLabels = map[string]string{ 38 core.LabelHostname.Key: etsyHostName, 39 core.LabelNamespaceName.Key: etsyNamespace, 40 core.LabelPodName.Key: etsyPodName, 41 core.LabelContainerName.Key: etsyContainerName, 42 core.LabelLabels.Key: etsyUserLabels, 43 } 44 45 var etsyMetricValue = core.MetricValue{ 46 MetricType: core.MetricGauge, 47 ValueType: core.ValueInt64, 48 IntValue: 1000, 49 } 50 51 var renameLabels = map[string]string{"old1": "new1", "old2": "new_label_2", "old3": "new_label_3"} 52 var defaultCustomizer = LabelCustomizer{renameLabels, DefaultLabelStyle} 53 var lowerCamelCustomizer = LabelCustomizer{renameLabels, SnakeToLowerCamel} 54 var upperCamelCustomizer = LabelCustomizer{renameLabels, SnakeToUpperCamel} 55 56 var defaultCustomize = defaultCustomizer.Customize 57 var lowerCamelCustomize = lowerCamelCustomizer.Customize 58 var upperCamelCustomize = upperCamelCustomizer.Customize 59 60 func TestEtsyFormatUnknownType(t *testing.T) { 61 etsyLabels[core.LabelMetricSetType.Key] = "UnknownMetricSetType" 62 expectedMsg := "" 63 64 formatter := NewEtsystatsdFormatter() 65 assert.NotNil(t, formatter) 66 67 msg, err := formatter.Format(etsyPrefix, etsyMetricName, etsyLabels, defaultCustomize, etsyMetricValue) 68 assert.Error(t, err) 69 assert.Equal(t, expectedMsg, msg) 70 } 71 72 func TestEtsyFormatPodContainerType(t *testing.T) { 73 etsyLabels[core.LabelMetricSetType.Key] = core.MetricSetTypePodContainer 74 expectedMsg := fmt.Sprintf("%s.node.%s.namespace.%s.pod.%s.container.%s.%s.%s:%v|g", 75 etsyPrefix, etsyHostName, etsyNamespace, etsyPodName, etsyContainerName, expectedLowerCamelLabels, etsyMetricName, etsyMetricValue.IntValue) 76 77 formatter := NewEtsystatsdFormatter() 78 assert.NotNil(t, formatter) 79 80 msg, err := formatter.Format(etsyPrefix, etsyMetricName, etsyLabels, lowerCamelCustomize, etsyMetricValue) 81 assert.NoError(t, err) 82 assert.Equal(t, expectedMsg, msg) 83 } 84 85 func TestEtsyFormatSystemContainerType(t *testing.T) { 86 etsyLabels[core.LabelMetricSetType.Key] = core.MetricSetTypeSystemContainer 87 expectedMsg := fmt.Sprintf("%s.node.%s.sys-container.%s.%s.%s:%v|g", 88 etsyPrefix, etsyHostName, etsyContainerName, expectedUpperCamelLabels, etsyMetricName, etsyMetricValue.IntValue) 89 90 formatter := NewEtsystatsdFormatter() 91 assert.NotNil(t, formatter) 92 93 msg, err := formatter.Format(etsyPrefix, etsyMetricName, etsyLabels, upperCamelCustomize, etsyMetricValue) 94 assert.NoError(t, err) 95 assert.Equal(t, expectedMsg, msg) 96 } 97 98 func TestEtsyFormatPodType(t *testing.T) { 99 etsyLabels[core.LabelMetricSetType.Key] = core.MetricSetTypePod 100 expectedMsg := fmt.Sprintf("%s.node.%s.namespace.%s.pod.%s.%s.%s:%v|g", 101 etsyPrefix, etsyHostName, etsyNamespace, etsyPodName, expectedLowerCamelLabels, etsyMetricName, etsyMetricValue.IntValue) 102 103 formatter := NewEtsystatsdFormatter() 104 assert.NotNil(t, formatter) 105 106 msg, err := formatter.Format(etsyPrefix, etsyMetricName, etsyLabels, lowerCamelCustomize, etsyMetricValue) 107 assert.NoError(t, err) 108 assert.Equal(t, expectedMsg, msg) 109 } 110 111 func TestEtsyFormatNamespaceType(t *testing.T) { 112 etsyLabels[core.LabelMetricSetType.Key] = core.MetricSetTypeNamespace 113 expectedMsg := fmt.Sprintf("%s.namespace.%s.%s.%s:%v|g", 114 etsyPrefix, etsyNamespace, expectedUpperCamelLabels, etsyMetricName, etsyMetricValue.IntValue) 115 116 formatter := NewEtsystatsdFormatter() 117 assert.NotNil(t, formatter) 118 119 msg, err := formatter.Format(etsyPrefix, etsyMetricName, etsyLabels, upperCamelCustomize, etsyMetricValue) 120 assert.NoError(t, err) 121 assert.Equal(t, expectedMsg, msg) 122 } 123 124 func TestEtsyFormatNodeType(t *testing.T) { 125 etsyLabels[core.LabelMetricSetType.Key] = core.MetricSetTypeNode 126 expectedMsg := fmt.Sprintf("%s.node.%s.%s.%s:%v|g", 127 etsyPrefix, etsyHostName, expectedLowerCamelLabels, etsyMetricName, etsyMetricValue.IntValue) 128 129 formatter := NewEtsystatsdFormatter() 130 assert.NotNil(t, formatter) 131 132 msg, err := formatter.Format(etsyPrefix, etsyMetricName, etsyLabels, lowerCamelCustomize, etsyMetricValue) 133 assert.NoError(t, err) 134 assert.Equal(t, expectedMsg, msg) 135 } 136 137 func TestEtsyFormatClusterType(t *testing.T) { 138 etsyLabels[core.LabelMetricSetType.Key] = core.MetricSetTypeCluster 139 expectedMsg := fmt.Sprintf("%s.cluster.%s.%s:%v|g", 140 etsyPrefix, expectedUpperCamelLabels, etsyMetricName, etsyMetricValue.IntValue) 141 142 formatter := NewEtsystatsdFormatter() 143 assert.NotNil(t, formatter) 144 145 msg, err := formatter.Format(etsyPrefix, etsyMetricName, etsyLabels, upperCamelCustomize, etsyMetricValue) 146 assert.NoError(t, err) 147 assert.Equal(t, expectedMsg, msg) 148 } 149 150 func TestEtsyFormatWithoutPrefix(t *testing.T) { 151 etsyLabels[core.LabelMetricSetType.Key] = core.MetricSetTypeCluster 152 expectedMsg := fmt.Sprintf("cluster.%s.%s:%v|g", 153 expectedLowerCamelLabels, etsyMetricName, etsyMetricValue.IntValue) 154 155 formatter := NewEtsystatsdFormatter() 156 assert.NotNil(t, formatter) 157 158 msg, err := formatter.Format("", etsyMetricName, etsyLabels, lowerCamelCustomize, etsyMetricValue) 159 assert.NoError(t, err) 160 assert.Equal(t, expectedMsg, msg) 161 } 162 163 func TestEtsyFormatWithResource(t *testing.T) { 164 etsyLabels[core.LabelMetricSetType.Key] = core.MetricSetTypeCluster 165 etsyLabels[core.LabelResourceID.Key] = etsyResourceName 166 expectedMsg := fmt.Sprintf("%s.cluster.%s.%s.%s:%v|g", 167 etsyPrefix, expectedUpperCamelLabels, etsyMetricName, etsyResourceName, etsyMetricValue.IntValue) 168 169 formatter := NewEtsystatsdFormatter() 170 assert.NotNil(t, formatter) 171 172 msg, err := formatter.Format(etsyPrefix, etsyMetricName, etsyLabels, upperCamelCustomize, etsyMetricValue) 173 assert.NoError(t, err) 174 assert.Equal(t, expectedMsg, msg) 175 }