Skip to content

Commit

Permalink
[chore] move attributes func into separate file (#11065)
Browse files Browse the repository at this point in the history
No functional change, just moving it into its own file to clean up the
tracer config since the meter provider will also use attributes.

---------

Signed-off-by: Alex Boten <223565+codeboten@users.noreply.github.com>
  • Loading branch information
codeboten committed Sep 6, 2024
1 parent 7966035 commit ec5d94a
Show file tree
Hide file tree
Showing 4 changed files with 81 additions and 63 deletions.
24 changes: 24 additions & 0 deletions service/telemetry/attributes.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0

package telemetry // import "go.opentelemetry.io/collector/service/telemetry"

import semconv "go.opentelemetry.io/otel/semconv/v1.4.0"

func attributes(set Settings, cfg Config) map[string]interface{} {
attrs := map[string]interface{}{
string(semconv.ServiceNameKey): set.BuildInfo.Command,
string(semconv.ServiceVersionKey): set.BuildInfo.Version,
}
for k, v := range cfg.Resource {
if v != nil {
attrs[k] = *v
}

// the new value is nil, delete the existing key
if _, ok := attrs[k]; ok && v == nil {
delete(attrs, k)
}
}
return attrs
}
57 changes: 57 additions & 0 deletions service/telemetry/attributes_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0

package telemetry // import "go.opentelemetry.io/collector/service/telemetry"

import (
"testing"

"github.com/stretchr/testify/require"

"go.opentelemetry.io/collector/component"
"go.opentelemetry.io/collector/service/telemetry/internal"
)

func TestAttributes(t *testing.T) {
tests := []struct {
name string
cfg Config
buildInfo component.BuildInfo
wantAttributes map[string]interface{}
}{
{
name: "no build info and no resource config",
cfg: Config{},
wantAttributes: map[string]interface{}{"service.name": "", "service.version": ""},
},
{
name: "build info and no resource config",
cfg: Config{},
buildInfo: component.BuildInfo{Command: "otelcoltest", Version: "0.0.0-test"},
wantAttributes: map[string]interface{}{"service.name": "otelcoltest", "service.version": "0.0.0-test"},
},
{
name: "no build info and resource config",
cfg: Config{Resource: map[string]*string{"service.name": ptr("resource.name"), "service.version": ptr("resource.version"), "test": ptr("test")}},
wantAttributes: map[string]interface{}{"service.name": "resource.name", "service.version": "resource.version", "test": "test"},
},
{
name: "build info and resource config",
buildInfo: component.BuildInfo{Command: "otelcoltest", Version: "0.0.0-test"},
cfg: Config{Resource: map[string]*string{"service.name": ptr("resource.name"), "service.version": ptr("resource.version"), "test": ptr("test")}},
wantAttributes: map[string]interface{}{"service.name": "resource.name", "service.version": "resource.version", "test": "test"},
},
{
name: "deleting a nil value",
buildInfo: component.BuildInfo{Command: "otelcoltest", Version: "0.0.0-test"},
cfg: Config{Resource: map[string]*string{"service.name": nil, "service.version": ptr("resource.version"), "test": ptr("test")}},
wantAttributes: map[string]interface{}{"service.version": "resource.version", "test": "test"},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
attrs := attributes(internal.Settings{BuildInfo: tt.buildInfo}, tt.cfg)
require.Equal(t, tt.wantAttributes, attrs)
})
}
}
18 changes: 0 additions & 18 deletions service/telemetry/tracer.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,24 +30,6 @@ var (
errUnsupportedPropagator = errors.New("unsupported trace propagator")
)

func attributes(set Settings, cfg Config) map[string]interface{} {
attrs := map[string]interface{}{
string(semconv.ServiceNameKey): set.BuildInfo.Command,
string(semconv.ServiceVersionKey): set.BuildInfo.Version,
}
for k, v := range cfg.Resource {
if v != nil {
attrs[k] = *v
}

// the new value is nil, delete the existing key
if _, ok := attrs[k]; ok && v == nil {
delete(attrs, k)
}
}
return attrs
}

type noopNoContextTracer struct {
embedded.Tracer
}
Expand Down
45 changes: 0 additions & 45 deletions service/telemetry/tracer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,57 +10,12 @@ import (
"github.com/stretchr/testify/require"
sdktrace "go.opentelemetry.io/otel/sdk/trace"

"go.opentelemetry.io/collector/component"
"go.opentelemetry.io/collector/config/configtelemetry"
"go.opentelemetry.io/collector/featuregate"
"go.opentelemetry.io/collector/internal/globalgates"
"go.opentelemetry.io/collector/service/telemetry/internal"
)

func TestAttributes(t *testing.T) {
tests := []struct {
name string
cfg Config
buildInfo component.BuildInfo
wantAttributes map[string]interface{}
}{
{
name: "no build info and no resource config",
cfg: Config{},
wantAttributes: map[string]interface{}{"service.name": "", "service.version": ""},
},
{
name: "build info and no resource config",
cfg: Config{},
buildInfo: component.BuildInfo{Command: "otelcoltest", Version: "0.0.0-test"},
wantAttributes: map[string]interface{}{"service.name": "otelcoltest", "service.version": "0.0.0-test"},
},
{
name: "no build info and resource config",
cfg: Config{Resource: map[string]*string{"service.name": ptr("resource.name"), "service.version": ptr("resource.version"), "test": ptr("test")}},
wantAttributes: map[string]interface{}{"service.name": "resource.name", "service.version": "resource.version", "test": "test"},
},
{
name: "build info and resource config",
buildInfo: component.BuildInfo{Command: "otelcoltest", Version: "0.0.0-test"},
cfg: Config{Resource: map[string]*string{"service.name": ptr("resource.name"), "service.version": ptr("resource.version"), "test": ptr("test")}},
wantAttributes: map[string]interface{}{"service.name": "resource.name", "service.version": "resource.version", "test": "test"},
},
{
name: "deleting a nil value",
buildInfo: component.BuildInfo{Command: "otelcoltest", Version: "0.0.0-test"},
cfg: Config{Resource: map[string]*string{"service.name": nil, "service.version": ptr("resource.version"), "test": ptr("test")}},
wantAttributes: map[string]interface{}{"service.version": "resource.version", "test": "test"},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
attrs := attributes(internal.Settings{BuildInfo: tt.buildInfo}, tt.cfg)
require.Equal(t, tt.wantAttributes, attrs)
})
}
}

func TestNewTracerProvider(t *testing.T) {
tests := []struct {
name string
Expand Down

0 comments on commit ec5d94a

Please sign in to comment.