@@ -71,6 +71,24 @@ func TestUpdateMetrics_MetricsDoNotExpire(t *testing.T) {
71
71
{Name : "hello" , Value : "world" },
72
72
}},
73
73
{Name : "d_gauge_four" , Type : agentproto .Stats_Metric_GAUGE , Value : 6 },
74
+ {Name : "e_gauge_four" , Type : agentproto .Stats_Metric_GAUGE , Value : 15 , Labels : []* agentproto.Stats_Metric_Label {
75
+ {Name : "foobar" , Value : "Foo,ba=z" },
76
+ {Name : "hello" , Value : "wo,,r=d" },
77
+ }},
78
+ {Name : "f_gauge_four" , Type : agentproto .Stats_Metric_GAUGE , Value : 6 , Labels : []* agentproto.Stats_Metric_Label {
79
+ {Name : "foobar" , Value : "foobaz" },
80
+ {Name : "empty" , Value : "" },
81
+ }},
82
+ }
83
+
84
+ given3 := []* agentproto.Stats_Metric {
85
+ {Name : "e_gauge_four" , Type : agentproto .Stats_Metric_GAUGE , Value : 17 , Labels : []* agentproto.Stats_Metric_Label {
86
+ {Name : "cat" , Value : "do,=g" },
87
+ {Name : "hello" , Value : "wo,,rld" },
88
+ }},
89
+ {Name : "f_gauge_four" , Type : agentproto .Stats_Metric_GAUGE , Value : 8 , Labels : []* agentproto.Stats_Metric_Label {
90
+ {Name : "foobar" , Value : "foobaz" },
91
+ }},
74
92
}
75
93
76
94
commonLabels := []* agentproto.Stats_Metric_Label {
@@ -99,11 +117,35 @@ func TestUpdateMetrics_MetricsDoNotExpire(t *testing.T) {
99
117
}},
100
118
{Name : "c_gauge_three" , Type : agentproto .Stats_Metric_GAUGE , Value : 5 , Labels : commonLabels },
101
119
{Name : "d_gauge_four" , Type : agentproto .Stats_Metric_GAUGE , Value : 6 , Labels : commonLabels },
120
+ {Name : "e_gauge_four" , Type : agentproto .Stats_Metric_GAUGE , Value : 17 , Labels : []* agentproto.Stats_Metric_Label {
121
+ {Name : "agent_name" , Value : testAgentName },
122
+ {Name : "cat" , Value : "do,=g" },
123
+ {Name : "hello" , Value : "wo,,rld" },
124
+ {Name : "username" , Value : testUsername },
125
+ {Name : "workspace_name" , Value : testWorkspaceName },
126
+ {Name : "template_name" , Value : testTemplateName },
127
+ }},
128
+ {Name : "e_gauge_four" , Type : agentproto .Stats_Metric_GAUGE , Value : 15 , Labels : []* agentproto.Stats_Metric_Label {
129
+ {Name : "agent_name" , Value : testAgentName },
130
+ {Name : "foobar" , Value : "Foo,ba=z" },
131
+ {Name : "hello" , Value : "wo,,r=d" },
132
+ {Name : "username" , Value : testUsername },
133
+ {Name : "workspace_name" , Value : testWorkspaceName },
134
+ {Name : "template_name" , Value : testTemplateName },
135
+ }},
136
+ {Name : "f_gauge_four" , Type : agentproto .Stats_Metric_GAUGE , Value : 8 , Labels : []* agentproto.Stats_Metric_Label {
137
+ {Name : "agent_name" , Value : testAgentName },
138
+ {Name : "foobar" , Value : "foobaz" },
139
+ {Name : "username" , Value : testUsername },
140
+ {Name : "workspace_name" , Value : testWorkspaceName },
141
+ {Name : "template_name" , Value : testTemplateName },
142
+ }},
102
143
}
103
144
104
145
// when
105
146
metricsAggregator .Update (ctx , testLabels , given1 )
106
147
metricsAggregator .Update (ctx , testLabels , given2 )
148
+ metricsAggregator .Update (ctx , testLabels , given3 )
107
149
108
150
// then
109
151
require .Eventually (t , func () bool {
@@ -178,21 +220,24 @@ func prometheusMetricToString(t *testing.T, m prometheus.Metric) string {
178
220
return dtoLabels [i ].Name < dtoLabels [j ].Name
179
221
})
180
222
181
- for i , dtoLabel := range dtoLabels {
223
+ for _ , dtoLabel := range dtoLabels {
224
+ if dtoLabel .Value == "" {
225
+ continue
226
+ }
182
227
_ , _ = sb .WriteString (dtoLabel .Name )
183
228
_ = sb .WriteByte ('=' )
184
- _ , _ = sb .WriteString (dtoLabel .Value )
185
-
186
- if i - 1 != len (dtoLabels ) {
187
- _ = sb .WriteByte (',' )
188
- }
229
+ _ , _ = sb .WriteString (prometheusmetrics .MetricLabelValueEncoder .Replace (dtoLabel .Value ))
189
230
}
190
- return sb .String ()
231
+ return strings . TrimRight ( sb .String (), "," )
191
232
}
192
233
193
234
func asMetricAgentLabels (dtoLabels []* dto.LabelPair ) []* agentproto.Stats_Metric_Label {
194
235
metricLabels := make ([]* agentproto.Stats_Metric_Label , 0 , len (dtoLabels ))
195
236
for _ , dtoLabel := range dtoLabels {
237
+ if dtoLabel .GetValue () == "" {
238
+ continue
239
+ }
240
+
196
241
metricLabels = append (metricLabels , & agentproto.Stats_Metric_Label {
197
242
Name : dtoLabel .GetName (),
198
243
Value : dtoLabel .GetValue (),
0 commit comments