Skip to content

Commit ef9caab

Browse files
mx-psicodeboten
andauthored
[chore] Move resource test to service/internal/resource (open-telemetry#9730)
**Description:** This test was out of place! Co-authored-by: Alex Boten <223565+codeboten@users.noreply.github.com>
1 parent 0839af5 commit ef9caab

File tree

2 files changed

+67
-58
lines changed

2 files changed

+67
-58
lines changed

service/internal/resource/config_test.go

+67
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,11 @@ import (
88

99
"github.com/google/uuid"
1010
"github.com/stretchr/testify/assert"
11+
sdkresource "go.opentelemetry.io/otel/sdk/resource"
1112

1213
"go.opentelemetry.io/collector/component"
14+
"go.opentelemetry.io/collector/pdata/pcommon"
15+
semconv "go.opentelemetry.io/collector/semconv/v1.18.0"
1316
)
1417

1518
const (
@@ -101,3 +104,67 @@ func TestNew(t *testing.T) {
101104
}
102105

103106
}
107+
108+
func pdataFromSdk(res *sdkresource.Resource) pcommon.Resource {
109+
// pcommon.NewResource is the best way to generate a new resource currently and is safe to use outside of tests.
110+
// Because the resource is signal agnostic, and we need a net new resource, not an existing one, this is the only
111+
// method of creating it without exposing internal packages.
112+
pcommonRes := pcommon.NewResource()
113+
for _, keyValue := range res.Attributes() {
114+
pcommonRes.Attributes().PutStr(string(keyValue.Key), keyValue.Value.AsString())
115+
}
116+
return pcommonRes
117+
}
118+
119+
func TestBuildResource(t *testing.T) {
120+
buildInfo := component.NewDefaultBuildInfo()
121+
122+
// Check default config
123+
var resMap map[string]*string
124+
otelRes := New(buildInfo, resMap)
125+
res := pdataFromSdk(otelRes)
126+
127+
assert.Equal(t, res.Attributes().Len(), 3)
128+
value, ok := res.Attributes().Get(semconv.AttributeServiceName)
129+
assert.True(t, ok)
130+
assert.Equal(t, buildInfo.Command, value.AsString())
131+
value, ok = res.Attributes().Get(semconv.AttributeServiceVersion)
132+
assert.True(t, ok)
133+
assert.Equal(t, buildInfo.Version, value.AsString())
134+
135+
_, ok = res.Attributes().Get(semconv.AttributeServiceInstanceID)
136+
assert.True(t, ok)
137+
138+
// Check override by nil
139+
resMap = map[string]*string{
140+
semconv.AttributeServiceName: nil,
141+
semconv.AttributeServiceVersion: nil,
142+
semconv.AttributeServiceInstanceID: nil,
143+
}
144+
otelRes = New(buildInfo, resMap)
145+
res = pdataFromSdk(otelRes)
146+
147+
// Attributes should not exist since we nil-ified all.
148+
assert.Equal(t, res.Attributes().Len(), 0)
149+
150+
// Check override values
151+
strPtr := func(v string) *string { return &v }
152+
resMap = map[string]*string{
153+
semconv.AttributeServiceName: strPtr("a"),
154+
semconv.AttributeServiceVersion: strPtr("b"),
155+
semconv.AttributeServiceInstanceID: strPtr("c"),
156+
}
157+
otelRes = New(buildInfo, resMap)
158+
res = pdataFromSdk(otelRes)
159+
160+
assert.Equal(t, res.Attributes().Len(), 3)
161+
value, ok = res.Attributes().Get(semconv.AttributeServiceName)
162+
assert.True(t, ok)
163+
assert.Equal(t, "a", value.AsString())
164+
value, ok = res.Attributes().Get(semconv.AttributeServiceVersion)
165+
assert.True(t, ok)
166+
assert.Equal(t, "b", value.AsString())
167+
value, ok = res.Attributes().Get(semconv.AttributeServiceInstanceID)
168+
assert.True(t, ok)
169+
assert.Equal(t, "c", value.AsString())
170+
}

service/telemetry_test.go

-58
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import (
1111

1212
io_prometheus_client "github.com/prometheus/client_model/go"
1313
"github.com/prometheus/common/expfmt"
14-
"github.com/stretchr/testify/assert"
1514
"github.com/stretchr/testify/require"
1615
"go.opencensus.io/stats"
1716
"go.opencensus.io/stats/view"
@@ -37,63 +36,6 @@ const (
3736
counterName = "test_counter"
3837
)
3938

40-
func TestBuildResource(t *testing.T) {
41-
buildInfo := component.NewDefaultBuildInfo()
42-
43-
// Check default config
44-
cfg := telemetry.Config{}
45-
otelRes := resource.New(buildInfo, cfg.Resource)
46-
res := pdataFromSdk(otelRes)
47-
48-
assert.Equal(t, res.Attributes().Len(), 3)
49-
value, ok := res.Attributes().Get(semconv.AttributeServiceName)
50-
assert.True(t, ok)
51-
assert.Equal(t, buildInfo.Command, value.AsString())
52-
value, ok = res.Attributes().Get(semconv.AttributeServiceVersion)
53-
assert.True(t, ok)
54-
assert.Equal(t, buildInfo.Version, value.AsString())
55-
56-
_, ok = res.Attributes().Get(semconv.AttributeServiceInstanceID)
57-
assert.True(t, ok)
58-
59-
// Check override by nil
60-
cfg = telemetry.Config{
61-
Resource: map[string]*string{
62-
semconv.AttributeServiceName: nil,
63-
semconv.AttributeServiceVersion: nil,
64-
semconv.AttributeServiceInstanceID: nil,
65-
},
66-
}
67-
otelRes = resource.New(buildInfo, cfg.Resource)
68-
res = pdataFromSdk(otelRes)
69-
70-
// Attributes should not exist since we nil-ified all.
71-
assert.Equal(t, res.Attributes().Len(), 0)
72-
73-
// Check override values
74-
strPtr := func(v string) *string { return &v }
75-
cfg = telemetry.Config{
76-
Resource: map[string]*string{
77-
semconv.AttributeServiceName: strPtr("a"),
78-
semconv.AttributeServiceVersion: strPtr("b"),
79-
semconv.AttributeServiceInstanceID: strPtr("c"),
80-
},
81-
}
82-
otelRes = resource.New(buildInfo, cfg.Resource)
83-
res = pdataFromSdk(otelRes)
84-
85-
assert.Equal(t, res.Attributes().Len(), 3)
86-
value, ok = res.Attributes().Get(semconv.AttributeServiceName)
87-
assert.True(t, ok)
88-
assert.Equal(t, "a", value.AsString())
89-
value, ok = res.Attributes().Get(semconv.AttributeServiceVersion)
90-
assert.True(t, ok)
91-
assert.Equal(t, "b", value.AsString())
92-
value, ok = res.Attributes().Get(semconv.AttributeServiceInstanceID)
93-
assert.True(t, ok)
94-
assert.Equal(t, "c", value.AsString())
95-
}
96-
9739
func TestTelemetryInit(t *testing.T) {
9840
type metricValue struct {
9941
value float64

0 commit comments

Comments
 (0)