mirror of
https://github.com/grafana/grafana.git
synced 2025-02-15 10:03:33 -06:00
* 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>
89 lines
2.3 KiB
Go
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)
|
|
}
|