Skip to content

Commit 6e6ed7d

Browse files
committed
Refactoring and fixing linting
1 parent cbf76ff commit 6e6ed7d

File tree

10 files changed

+116
-102
lines changed

10 files changed

+116
-102
lines changed

cmd/otelcontribcol/go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ module github.com/open-telemetry/opentelemetry-collector-contrib/cmd/otelcontrib
44

55
go 1.21.0
66

7-
toolchain go1.21.12
7+
toolchain go1.22.5
88

99
require (
1010
github.com/open-telemetry/opentelemetry-collector-contrib/confmap/provider/s3provider v0.106.1

cmd/oteltestbedcol/go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ module github.com/open-telemetry/opentelemetry-collector-contrib/cmd/oteltestbed
44

55
go 1.21.0
66

7-
toolchain go1.21.12
7+
toolchain go1.22.5
88

99
require (
1010
github.com/open-telemetry/opentelemetry-collector-contrib/exporter/carbonexporter v0.106.1

receiver/datadogreceiver/internal/translator/batcher.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,14 +48,14 @@ var metricTypeMap = map[string]pmetric.MetricType{
4848
}
4949

5050
func parseSeriesProperties(name string, metricType string, tags []string, host string, version string, stringPool *StringPool) dimensions {
51-
resourceAttrs, scopeAttrs, dpAttrs := tagsToAttributes(tags, host, stringPool)
51+
attrs := tagsToAttributes(tags, host, stringPool)
5252
return dimensions{
5353
name: name,
5454
metricType: metricTypeMap[metricType],
5555
buildInfo: version,
56-
resourceAttrs: resourceAttrs,
57-
scopeAttrs: scopeAttrs,
58-
dpAttrs: dpAttrs,
56+
resourceAttrs: attrs.resource,
57+
scopeAttrs: attrs.scope,
58+
dpAttrs: attrs.dp,
5959
}
6060
}
6161

receiver/datadogreceiver/internal/translator/batcher_test.go

Lines changed: 23 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -47,15 +47,16 @@ func TestMetricBatcher(t *testing.T) {
4747
},
4848
expect: func(t *testing.T, result pmetric.Metrics) {
4949
// Different hosts should result in different ResourceMetrics
50+
requireMetricAndDataPointCounts(t, result, 2, 2)
5051
require.Equal(t, 2, result.ResourceMetrics().Len())
5152
resource1 := result.ResourceMetrics().At(0)
5253
resource2 := result.ResourceMetrics().At(1)
53-
v, exists := resource1.Resource().Attributes().Get("host.name")
54-
require.True(t, exists)
55-
require.Equal(t, "Host1", v.AsString())
56-
v, exists = resource2.Resource().Attributes().Get("host.name")
57-
require.True(t, exists)
58-
require.Equal(t, "Host2", v.AsString())
54+
55+
res1ExpectedAttrs := tagsToAttributes([]string{"env:tag1", "service:test1", "version:tag1"}, "Host1", newStringPool())
56+
requireResourceAttributes(t, resource1.Resource().Attributes(), res1ExpectedAttrs.resource)
57+
58+
res2ExpectedAttrs := tagsToAttributes([]string{"env:tag1", "service:test1", "version:tag1"}, "Host2", newStringPool())
59+
requireResourceAttributes(t, resource2.Resource().Attributes(), res2ExpectedAttrs.resource)
5960

6061
require.Equal(t, 1, resource1.ScopeMetrics().Len())
6162
require.Equal(t, 1, resource2.ScopeMetrics().Len())
@@ -98,16 +99,15 @@ func TestMetricBatcher(t *testing.T) {
9899
expect: func(t *testing.T, result pmetric.Metrics) {
99100
// The different metrics will fall under the same ResourceMetric and ScopeMetric
100101
// and there will be separate metrics under the ScopeMetric.Metrics()
102+
requireMetricAndDataPointCounts(t, result, 2, 2)
101103
require.Equal(t, 1, result.ResourceMetrics().Len())
102104
resource := result.ResourceMetrics().At(0)
103105

104-
v, exists := resource.Resource().Attributes().Get("host.name")
105-
require.True(t, exists)
106-
require.Equal(t, "Host1", v.AsString())
106+
expectedAttrs := tagsToAttributes([]string{"env:tag1", "service:test1", "version:tag1"}, "Host1", newStringPool())
107+
requireResourceAttributes(t, resource.Resource().Attributes(), expectedAttrs.resource)
107108

108109
require.Equal(t, 1, resource.ScopeMetrics().Len())
109110

110-
require.Equal(t, 2, resource.ScopeMetrics().At(0).Metrics().Len())
111111
require.Equal(t, "TestCount1", resource.ScopeMetrics().At(0).Metrics().At(0).Name())
112112
require.Equal(t, "TestCount2", resource.ScopeMetrics().At(0).Metrics().At(1).Name())
113113
},
@@ -142,21 +142,16 @@ func TestMetricBatcher(t *testing.T) {
142142
},
143143
expect: func(t *testing.T, result pmetric.Metrics) {
144144
// Differences in attribute values should result in different resourceMetrics
145+
requireMetricAndDataPointCounts(t, result, 2, 2)
145146
require.Equal(t, 2, result.ResourceMetrics().Len())
146147
resource1 := result.ResourceMetrics().At(0)
147148
resource2 := result.ResourceMetrics().At(1)
148-
v, exists := resource1.Resource().Attributes().Get("host.name")
149-
require.True(t, exists)
150-
require.Equal(t, "Host1", v.AsString())
151-
v, exists = resource2.Resource().Attributes().Get("host.name")
152-
require.True(t, exists)
153-
require.Equal(t, "Host1", v.AsString())
154-
v, exists = resource1.Resource().Attributes().Get("deployment.environment")
155-
require.True(t, exists)
156-
require.Equal(t, "dev", v.AsString())
157-
v, exists = resource2.Resource().Attributes().Get("deployment.environment")
158-
require.True(t, exists)
159-
require.Equal(t, "prod", v.AsString())
149+
150+
res1ExpectedAttrs := tagsToAttributes([]string{"env:dev", "version:tag1"}, "Host1", newStringPool())
151+
requireResourceAttributes(t, resource1.Resource().Attributes(), res1ExpectedAttrs.resource)
152+
153+
res2ExpectedAttrs := tagsToAttributes([]string{"env:prod", "version:tag1"}, "Host1", newStringPool())
154+
requireResourceAttributes(t, resource2.Resource().Attributes(), res2ExpectedAttrs.resource)
160155

161156
require.Equal(t, 1, resource1.ScopeMetrics().Len())
162157
require.Equal(t, 1, resource1.ScopeMetrics().Len())
@@ -203,17 +198,15 @@ func TestMetricBatcher(t *testing.T) {
203198
// The different metrics will fall under the same ResourceMetric and ScopeMetric
204199
// and there will be separate metrics under the ScopeMetric.Metrics() due to the different
205200
// data types
201+
requireMetricAndDataPointCounts(t, result, 2, 2)
206202
require.Equal(t, 1, result.ResourceMetrics().Len())
207203
resource := result.ResourceMetrics().At(0)
208204

209-
v, exists := resource.Resource().Attributes().Get("host.name")
210-
require.True(t, exists)
211-
require.Equal(t, "Host1", v.AsString())
205+
expectedAttrs := tagsToAttributes([]string{"env:dev", "version:tag1"}, "Host1", newStringPool())
206+
requireResourceAttributes(t, resource.Resource().Attributes(), expectedAttrs.resource)
212207

213208
require.Equal(t, 1, resource.ScopeMetrics().Len())
214209

215-
require.Equal(t, 2, resource.ScopeMetrics().At(0).Metrics().Len())
216-
217210
require.Equal(t, "TestMetric", resource.ScopeMetrics().At(0).Metrics().At(0).Name())
218211
require.Equal(t, "TestMetric", resource.ScopeMetrics().At(0).Metrics().At(1).Name())
219212

@@ -253,17 +246,15 @@ func TestMetricBatcher(t *testing.T) {
253246
// Same host, tags, and metric name but two different datapoints
254247
// should result in a single resourceMetric, scopeMetric, and metric
255248
// but two different datapoints under that metric
249+
requireMetricAndDataPointCounts(t, result, 1, 2)
256250
require.Equal(t, 1, result.ResourceMetrics().Len())
257251
resource := result.ResourceMetrics().At(0)
258252

259-
v, exists := resource.Resource().Attributes().Get("host.name")
260-
require.True(t, exists)
261-
require.Equal(t, "Host1", v.AsString())
253+
expectedAttrs := tagsToAttributes([]string{"env:dev", "version:tag1"}, "Host1", newStringPool())
254+
requireResourceAttributes(t, resource.Resource().Attributes(), expectedAttrs.resource)
262255

263256
require.Equal(t, 1, resource.ScopeMetrics().Len())
264257

265-
require.Equal(t, 1, resource.ScopeMetrics().At(0).Metrics().Len())
266-
267258
require.Equal(t, "TestMetric", resource.ScopeMetrics().At(0).Metrics().At(0).Name())
268259

269260
require.Equal(t, pmetric.MetricTypeSum, resource.ScopeMetrics().At(0).Metrics().At(0).Type())

receiver/datadogreceiver/internal/translator/series.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import (
1010
"time"
1111

1212
"github.com/DataDog/agent-payload/v5/gogen"
13-
1413
datadogV1 "github.com/DataDog/datadog-api-client-go/v2/api/datadogV1"
1514
"go.opentelemetry.io/collector/pdata/pcommon"
1615
"go.opentelemetry.io/collector/pdata/pmetric"

receiver/datadogreceiver/internal/translator/series_test.go

Lines changed: 44 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,8 @@ import (
1010
"testing"
1111

1212
"github.com/DataDog/agent-payload/v5/gogen"
13-
"github.com/stretchr/testify/require"
14-
1513
"github.com/DataDog/datadog-api-client-go/v2/api/datadogV1"
14+
"github.com/stretchr/testify/require"
1615
"go.opentelemetry.io/collector/component"
1716
"go.opentelemetry.io/collector/pdata/pmetric"
1817
)
@@ -122,19 +121,20 @@ func TestTranslateSeriesV1(t *testing.T) {
122121
expect: func(t *testing.T, result pmetric.Metrics) {
123122
requireMetricAndDataPointCounts(t, result, 1, 2)
124123

125-
expectedResourceAttrs, expectedScopeAttrs, expectedDpAttrs := tagsToAttributes([]string{"env:tag1", "version:tag2"}, "Host1", newStringPool())
126-
requireResourceMetrics(t, result, expectedResourceAttrs, 1)
124+
expectedAttrs := tagsToAttributes([]string{"env:tag1", "version:tag2"}, "Host1", newStringPool())
125+
require.Equal(t, 1, result.ResourceMetrics().Len())
126+
requireResourceAttributes(t, result.ResourceMetrics().At(0).Resource().Attributes(), expectedAttrs.resource)
127127
requireScopeMetrics(t, result, 1, 1)
128-
requireScope(t, result, expectedScopeAttrs, "otelcol/datadogreceiver", component.NewDefaultBuildInfo().Version)
128+
requireScope(t, result, expectedAttrs.scope, component.NewDefaultBuildInfo().Version)
129129

130130
metric := result.ResourceMetrics().At(0).ScopeMetrics().At(0).Metrics().At(0)
131-
requireSum(t, metric, "TestCount", pmetric.AggregationTemporalityDelta, 2)
131+
requireSum(t, metric, "TestCount", 2)
132132

133133
dp := metric.Sum().DataPoints().At(0)
134-
requireDp(t, dp, expectedDpAttrs, 1636629071, 0.5)
134+
requireDp(t, dp, expectedAttrs.dp, 1636629071, 0.5)
135135

136136
dp = metric.Sum().DataPoints().At(1)
137-
requireDp(t, dp, expectedDpAttrs, 1636629081, 1.0)
137+
requireDp(t, dp, expectedAttrs.dp, 1636629081, 1.0)
138138
},
139139
},
140140
{
@@ -162,19 +162,20 @@ func TestTranslateSeriesV1(t *testing.T) {
162162
expect: func(t *testing.T, result pmetric.Metrics) {
163163
requireMetricAndDataPointCounts(t, result, 1, 2)
164164

165-
expectedResourceAttrs, expectedScopeAttrs, expectedDpAttrs := tagsToAttributes([]string{"env:tag1", "version:tag2"}, "Host1", newStringPool())
166-
requireResourceMetrics(t, result, expectedResourceAttrs, 1)
165+
expectedAttrs := tagsToAttributes([]string{"env:tag1", "version:tag2"}, "Host1", newStringPool())
166+
require.Equal(t, 1, result.ResourceMetrics().Len())
167+
requireResourceAttributes(t, result.ResourceMetrics().At(0).Resource().Attributes(), expectedAttrs.resource)
167168
requireScopeMetrics(t, result, 1, 1)
168-
requireScope(t, result, expectedScopeAttrs, "otelcol/datadogreceiver", component.NewDefaultBuildInfo().Version)
169+
requireScope(t, result, expectedAttrs.scope, component.NewDefaultBuildInfo().Version)
169170

170171
metric := result.ResourceMetrics().At(0).ScopeMetrics().At(0).Metrics().At(0)
171172
requireGauge(t, metric, "TestGauge", 2)
172173

173174
dp := metric.Gauge().DataPoints().At(0)
174-
requireDp(t, dp, expectedDpAttrs, 1636629071, 2)
175+
requireDp(t, dp, expectedAttrs.dp, 1636629071, 2)
175176

176177
dp = metric.Gauge().DataPoints().At(1)
177-
requireDp(t, dp, expectedDpAttrs, 1636629081, 3)
178+
requireDp(t, dp, expectedAttrs.dp, 1636629081, 3)
178179
},
179180
},
180181
{
@@ -202,19 +203,20 @@ func TestTranslateSeriesV1(t *testing.T) {
202203
expect: func(t *testing.T, result pmetric.Metrics) {
203204
requireMetricAndDataPointCounts(t, result, 1, 2)
204205

205-
expectedResourceAttrs, expectedScopeAttrs, expectedDpAttrs := tagsToAttributes([]string{"env:tag1", "version:tag2"}, "Host1", newStringPool())
206-
requireResourceMetrics(t, result, expectedResourceAttrs, 1)
206+
expectedAttrs := tagsToAttributes([]string{"env:tag1", "version:tag2"}, "Host1", newStringPool())
207+
require.Equal(t, 1, result.ResourceMetrics().Len())
208+
requireResourceAttributes(t, result.ResourceMetrics().At(0).Resource().Attributes(), expectedAttrs.resource)
207209
requireScopeMetrics(t, result, 1, 1)
208-
requireScope(t, result, expectedScopeAttrs, "otelcol/datadogreceiver", component.NewDefaultBuildInfo().Version)
210+
requireScope(t, result, expectedAttrs.scope, component.NewDefaultBuildInfo().Version)
209211

210212
metric := result.ResourceMetrics().At(0).ScopeMetrics().At(0).Metrics().At(0)
211-
requireSum(t, metric, "TestRate", pmetric.AggregationTemporalityDelta, 2)
213+
requireSum(t, metric, "TestRate", 2)
212214

213215
dp := metric.Sum().DataPoints().At(0)
214-
requireDp(t, dp, expectedDpAttrs, 1636629071, 2)
216+
requireDp(t, dp, expectedAttrs.dp, 1636629071, 2)
215217

216218
dp = metric.Sum().DataPoints().At(1)
217-
requireDp(t, dp, expectedDpAttrs, 1636629081, 3)
219+
requireDp(t, dp, expectedAttrs.dp, 1636629081, 3)
218220
},
219221
},
220222
}
@@ -263,20 +265,21 @@ func TestTranslateSeriesV2(t *testing.T) {
263265
expect: func(t *testing.T, result pmetric.Metrics) {
264266
requireMetricAndDataPointCounts(t, result, 1, 2)
265267

266-
expectedResourceAttrs, expectedScopeAttrs, expectedDpAttrs := tagsToAttributes([]string{"env:tag1", "version:tag2"}, "Host1", newStringPool())
267-
expectedResourceAttrs.PutStr("source", "")
268-
requireResourceMetrics(t, result, expectedResourceAttrs, 1)
268+
expectedAttrs := tagsToAttributes([]string{"env:tag1", "version:tag2"}, "Host1", newStringPool())
269+
expectedAttrs.resource.PutStr("source", "")
270+
require.Equal(t, 1, result.ResourceMetrics().Len())
271+
requireResourceAttributes(t, result.ResourceMetrics().At(0).Resource().Attributes(), expectedAttrs.resource)
269272
requireScopeMetrics(t, result, 1, 1)
270-
requireScope(t, result, expectedScopeAttrs, "otelcol/datadogreceiver", component.NewDefaultBuildInfo().Version)
273+
requireScope(t, result, expectedAttrs.scope, component.NewDefaultBuildInfo().Version)
271274

272275
metric := result.ResourceMetrics().At(0).ScopeMetrics().At(0).Metrics().At(0)
273-
requireSum(t, metric, "TestCount", pmetric.AggregationTemporalityDelta, 2)
276+
requireSum(t, metric, "TestCount", 2)
274277

275278
dp := metric.Sum().DataPoints().At(0)
276-
requireDp(t, dp, expectedDpAttrs, 1636629071, 0.5)
279+
requireDp(t, dp, expectedAttrs.dp, 1636629071, 0.5)
277280

278281
dp = metric.Sum().DataPoints().At(1)
279-
requireDp(t, dp, expectedDpAttrs, 1636629081, 1.0)
282+
requireDp(t, dp, expectedAttrs.dp, 1636629081, 1.0)
280283
},
281284
},
282285
{
@@ -307,20 +310,21 @@ func TestTranslateSeriesV2(t *testing.T) {
307310
expect: func(t *testing.T, result pmetric.Metrics) {
308311
requireMetricAndDataPointCounts(t, result, 1, 2)
309312

310-
expectedResourceAttrs, expectedScopeAttrs, expectedDpAttrs := tagsToAttributes([]string{"env:tag1", "version:tag2"}, "Host1", newStringPool())
311-
expectedResourceAttrs.PutStr("source", "")
312-
requireResourceMetrics(t, result, expectedResourceAttrs, 1)
313+
expectedAttrs := tagsToAttributes([]string{"env:tag1", "version:tag2"}, "Host1", newStringPool())
314+
expectedAttrs.resource.PutStr("source", "")
315+
require.Equal(t, 1, result.ResourceMetrics().Len())
316+
requireResourceAttributes(t, result.ResourceMetrics().At(0).Resource().Attributes(), expectedAttrs.resource)
313317
requireScopeMetrics(t, result, 1, 1)
314-
requireScope(t, result, expectedScopeAttrs, "otelcol/datadogreceiver", component.NewDefaultBuildInfo().Version)
318+
requireScope(t, result, expectedAttrs.scope, component.NewDefaultBuildInfo().Version)
315319

316320
metric := result.ResourceMetrics().At(0).ScopeMetrics().At(0).Metrics().At(0)
317321
requireGauge(t, metric, "TestGauge", 2)
318322

319323
dp := metric.Gauge().DataPoints().At(0)
320-
requireDp(t, dp, expectedDpAttrs, 1636629071, 2)
324+
requireDp(t, dp, expectedAttrs.dp, 1636629071, 2)
321325

322326
dp = metric.Gauge().DataPoints().At(1)
323-
requireDp(t, dp, expectedDpAttrs, 1636629081, 3)
327+
requireDp(t, dp, expectedAttrs.dp, 1636629081, 3)
324328
},
325329
},
326330
{
@@ -351,20 +355,21 @@ func TestTranslateSeriesV2(t *testing.T) {
351355
expect: func(t *testing.T, result pmetric.Metrics) {
352356
requireMetricAndDataPointCounts(t, result, 1, 2)
353357

354-
expectedResourceAttrs, expectedScopeAttrs, expectedDpAttrs := tagsToAttributes([]string{"env:tag1", "version:tag2"}, "Host1", newStringPool())
355-
expectedResourceAttrs.PutStr("source", "")
356-
requireResourceMetrics(t, result, expectedResourceAttrs, 1)
358+
expectedAttrs := tagsToAttributes([]string{"env:tag1", "version:tag2"}, "Host1", newStringPool())
359+
expectedAttrs.resource.PutStr("source", "")
360+
require.Equal(t, 1, result.ResourceMetrics().Len())
361+
requireResourceAttributes(t, result.ResourceMetrics().At(0).Resource().Attributes(), expectedAttrs.resource)
357362
requireScopeMetrics(t, result, 1, 1)
358-
requireScope(t, result, expectedScopeAttrs, "otelcol/datadogreceiver", component.NewDefaultBuildInfo().Version)
363+
requireScope(t, result, expectedAttrs.scope, component.NewDefaultBuildInfo().Version)
359364

360365
metric := result.ResourceMetrics().At(0).ScopeMetrics().At(0).Metrics().At(0)
361-
requireSum(t, metric, "TestRate", pmetric.AggregationTemporalityDelta, 2)
366+
requireSum(t, metric, "TestRate", 2)
362367

363368
dp := metric.Sum().DataPoints().At(0)
364-
requireDp(t, dp, expectedDpAttrs, 1636629071, 2)
369+
requireDp(t, dp, expectedAttrs.dp, 1636629071, 2)
365370

366371
dp = metric.Sum().DataPoints().At(1)
367-
requireDp(t, dp, expectedDpAttrs, 1636629081, 3)
372+
requireDp(t, dp, expectedAttrs.dp, 1636629081, 3)
368373
},
369374
},
370375
{

receiver/datadogreceiver/internal/translator/tags.go

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -116,27 +116,36 @@ func (s *StringPool) Intern(str string) string {
116116
return interned
117117
}
118118

119-
func tagsToAttributes(tags []string, host string, stringPool *StringPool) (pcommon.Map, pcommon.Map, pcommon.Map) {
120-
resourceAttrs := pcommon.NewMap()
121-
scopeAttrs := pcommon.NewMap()
122-
dpAttrs := pcommon.NewMap()
119+
type attributes struct {
120+
host string
121+
resource pcommon.Map
122+
scope pcommon.Map
123+
dp pcommon.Map
124+
}
125+
126+
func tagsToAttributes(tags []string, host string, stringPool *StringPool) attributes {
127+
attrs := attributes{
128+
resource: pcommon.NewMap(),
129+
scope: pcommon.NewMap(),
130+
dp: pcommon.NewMap(),
131+
}
123132

124133
if host != "" {
125-
resourceAttrs.PutStr(semconv.AttributeHostName, host)
134+
attrs.resource.PutStr(semconv.AttributeHostName, host)
126135
}
127136

128137
var key, val string
129138
for _, tag := range tags {
130139
key, val = translateDatadogTagToKeyValuePair(tag)
131140
if attr, ok := datadogKnownResourceAttributes[key]; ok {
132141
val = stringPool.Intern(val) // No need to intern the key if we already have it
133-
resourceAttrs.PutStr(attr, val)
142+
attrs.resource.PutStr(attr, val)
134143
} else {
135144
key = stringPool.Intern(translateDatadogKeyToOTel(key))
136145
val = stringPool.Intern(val)
137-
dpAttrs.PutStr(key, val)
146+
attrs.dp.PutStr(key, val)
138147
}
139148
}
140149

141-
return resourceAttrs, scopeAttrs, dpAttrs
150+
return attrs
142151
}

0 commit comments

Comments
 (0)