Skip to content

Commit

Permalink
[chore] move attributes func into separate file
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 5, 2024
1 parent e99074d commit 154aaa5
Show file tree
Hide file tree
Showing 4 changed files with 80 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
}
56 changes: 56 additions & 0 deletions service/telemetry/attributes_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
// 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 154aaa5

Please sign in to comment.