Files
temporal/common/telemetry/config_test.go
Stephan Behnke d91f3af3e3 Apply testifylint fixes (#10792)
## What changed?

- Applied the server-owned subset of testifylint auto-fixes.
- Exact commands that were run:

```sh
.bin/golangci-lint-v2.9.0 run --allow-parallel-runners --concurrency 4 --fix --enable-only testifylint --build-tags disable_grpc_modules,test_dep --timeout 20m --config=.github/.golangci.yml
make goimports
git diff --check
```

- No manual or AI changes were made; unless commented as such.
- Some fixes caused lint errors; those were reverted again.
- Changes were all reviewed by me.
2026-06-24 07:22:13 -07:00

133 lines
3.3 KiB
Go

package telemetry_test
import (
"testing"
"time"
"github.com/stretchr/testify/require"
"go.temporal.io/server/common/telemetry"
"gopkg.in/yaml.v3"
)
var basicOTLPTraceOnlyConfig = `
exporters:
- kind:
signal: traces
model: otlp
protocol: grpc
spec:
headers:
a: b
c: d
timeout: 10s
retry:
enabled: true
initial_interval: 1s
max_interval: 1s
max_elapsed_time: 1s
connection:
block: false
insecure: true
endpoint: localhost:4317
`
var sharedConnOTLPConfig = `
otel:
connections:
- kind: grpc
metadata:
name: conn1
spec:
endpoint: localhost:4317
exporters:
- kind:
signal: traces
model: otlp
protocol: grpc
spec:
connection_name: conn1
- kind:
signal: metrics
model: otlp
protocol: grpc
spec:
connection_name: conn1
`
func TestEmptyConfig(t *testing.T) {
cfg := telemetry.ExportConfig{}
exporters, err := cfg.SpanExporters()
require.NoError(t, err)
require.Empty(t, exporters)
}
func TestExportersWithSharedConn(t *testing.T) {
root := struct{ Otel telemetry.PrivateExportConfig }{}
err := yaml.Unmarshal([]byte(sharedConnOTLPConfig), &root)
require.NoError(t, err)
cfg := &root.Otel
spanExporters, err := cfg.SpanExporters()
require.NoError(t, err)
require.Len(t, spanExporters, 1)
metricExporters, err := cfg.MetricExporters()
require.NoError(t, err)
require.Len(t, metricExporters, 1)
}
func TestSharedConn(t *testing.T) {
root := struct{ Otel telemetry.PrivateExportConfig }{}
err := yaml.Unmarshal([]byte(sharedConnOTLPConfig), &root)
require.NoError(t, err)
cfg := &root.Otel
require.Len(t, cfg.Connections, 1)
require.Len(t, cfg.Exporters, 2)
exp := cfg.Exporters[0]
require.Equal(t, "traces", exp.Kind.Signal)
require.Equal(t, "otlp", exp.Kind.Model)
require.Equal(t, "grpc", exp.Kind.Protocol)
require.NotNil(t, exp.Spec)
sspec, ok := exp.Spec.(*telemetry.OTLPGRPCSpanExporter)
require.True(t, ok)
require.Equal(t, "conn1", sspec.ConnectionName)
exp = cfg.Exporters[1]
require.Equal(t, "metrics", exp.Kind.Signal)
require.Equal(t, "otlp", exp.Kind.Model)
require.Equal(t, "grpc", exp.Kind.Protocol)
require.NotNil(t, exp.Spec)
mspec, ok := exp.Spec.(*telemetry.OTLPGRPCMetricExporter)
require.True(t, ok)
require.Equal(t, "conn1", mspec.ConnectionName)
}
func TestOTLPTraceGRPC(t *testing.T) {
cfg := telemetry.PrivateExportConfig{}
err := yaml.Unmarshal([]byte(basicOTLPTraceOnlyConfig), &cfg)
require.NoError(t, err)
require.Empty(t, cfg.Connections)
require.Len(t, cfg.Exporters, 1)
exp := cfg.Exporters[0]
require.Equal(t, "traces", exp.Kind.Signal)
require.Equal(t, "otlp", exp.Kind.Model)
require.Equal(t, "grpc", exp.Kind.Protocol)
require.NotNil(t, exp.Spec)
spec, ok := exp.Spec.(*telemetry.OTLPGRPCSpanExporter)
require.True(t, ok)
require.Equal(t, map[string]string{"a": "b", "c": "d"}, spec.Headers)
require.Equal(t, 10*time.Second, spec.Timeout)
require.True(t, spec.Retry.Enabled)
require.Equal(t, time.Second, spec.Retry.InitialInterval)
require.Equal(t, time.Second, spec.Retry.MaxInterval)
require.Equal(t, time.Second, spec.Retry.MaxElapsedTime)
conn := spec.Connection
require.True(t, conn.Insecure)
require.Equal(t, "localhost:4317", conn.Endpoint)
require.False(t, conn.Block)
}