grafana/pkg/infra/tracing/optentelemetry_tracing_test.go
Dave Henderson 801b61c963
Tracing: Add new [tracing.opentelemetry] custom_attributes config setting (#54110)
* tracing: Add new [tracing.opentelemetry] custom_attributes config setting

Signed-off-by: Dave Henderson <dave.henderson@grafana.com>

* Fix typos in config

Signed-off-by: Dave Henderson <dave.henderson@grafana.com>

* Return error when custom_attributes contains malformed entries

Signed-off-by: Dave Henderson <dave.henderson@grafana.com>

Signed-off-by: Dave Henderson <dave.henderson@grafana.com>
2022-09-16 09:54:25 -04:00

89 lines
2.3 KiB
Go

package tracing
import (
"testing"
"github.com/grafana/grafana/pkg/setting"
"github.com/stretchr/testify/assert"
"go.opentelemetry.io/otel/attribute"
)
func TestSplitCustomAttribs(t *testing.T) {
tests := []struct {
input string
expected []attribute.KeyValue
}{
{
input: "key1:value:1",
expected: []attribute.KeyValue{attribute.String("key1", "value:1")},
},
{
input: "key1:value1,key2:value2",
expected: []attribute.KeyValue{
attribute.String("key1", "value1"),
attribute.String("key2", "value2"),
},
},
{
input: "",
expected: []attribute.KeyValue{},
},
}
for _, test := range tests {
attribs, err := splitCustomAttribs(test.input)
assert.NoError(t, err)
assert.EqualValues(t, test.expected, attribs)
}
}
func TestSplitCustomAttribs_Malformed(t *testing.T) {
tests := []struct {
input string
expected []attribute.KeyValue
}{
{input: "key1=value1"},
{input: "key1"},
}
for _, test := range tests {
_, err := splitCustomAttribs(test.input)
assert.Error(t, err)
}
}
func TestOptentelemetry_ParseSettingsOpentelemetry(t *testing.T) {
cfg := setting.NewCfg()
otel := &Opentelemetry{Cfg: cfg}
otelsect := cfg.Raw.Section("tracing.opentelemetry")
jaegersect := cfg.Raw.Section("tracing.opentelemetry.jaeger")
otlpsect := cfg.Raw.Section("tracing.opentelemetry.otlp")
assert.NoError(t, otel.parseSettingsOpentelemetry())
assert.Equal(t, noopExporter, otel.enabled)
otelsect.Key("custom_attributes")
assert.NoError(t, otel.parseSettingsOpentelemetry())
assert.Empty(t, otel.customAttribs)
otelsect.Key("custom_attributes").SetValue("key1:value1,key2:value2")
assert.NoError(t, otel.parseSettingsOpentelemetry())
expected := []attribute.KeyValue{
attribute.String("key1", "value1"),
attribute.String("key2", "value2"),
}
assert.Equal(t, expected, otel.customAttribs)
jaegersect.Key("address").SetValue("somehost:6831")
assert.NoError(t, otel.parseSettingsOpentelemetry())
assert.Equal(t, "somehost:6831", otel.address)
assert.Equal(t, jaegerExporter, otel.enabled)
jaegersect.Key("address").SetValue("")
otlpsect.Key("address").SetValue("somehost:4317")
assert.NoError(t, otel.parseSettingsOpentelemetry())
assert.Equal(t, "somehost:4317", otel.address)
assert.Equal(t, otlpExporter, otel.enabled)
}