MCPcopy
hub / github.com/grafana/dskit / TestOTelSpanLogger_CustomLogger

Function TestOTelSpanLogger_CustomLogger

spanlogger/otel_spanlogger_test.go:115–158  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

113}
114
115func TestOTelSpanLogger_CustomLogger(t *testing.T) {
116 t.Cleanup(spanExporter.Reset)
117
118 var expectedTraceID string
119 var logged []map[string]string
120 // logger will store all non-"trace_id" keys in `logged`
121 // it will check that "trace_id" is equal to expectedTraceID.
122 var logger funcLogger = func(keyvals ...interface{}) error {
123 values := map[string]string{}
124 var loggedTraceID string
125 for i := 0; i < len(keyvals); i += 2 {
126 k := keyvals[i].(string)
127 v := keyvals[i+1].(string) // we only log strings.
128 if k == "trace_id" {
129 loggedTraceID = v
130 } else {
131 values[k] = v
132 }
133 }
134 require.Equal(t, expectedTraceID, loggedTraceID)
135 logged = append(logged, values)
136 return nil
137 }
138 resolver := tenant.NewMultiResolver()
139
140 span, ctx := NewOTel(context.Background(), logger, tracer, "test", resolver)
141 expectedTraceID = trace.SpanFromContext(ctx).SpanContext().TraceID().String()
142 _ = span.Log("msg", "original spanlogger")
143
144 span = FromContext(ctx, log.NewNopLogger(), resolver)
145 _ = span.Log("msg", "restored spanlogger")
146
147 // No trace_id expected for the next one.
148 expectedTraceID = ""
149 span = FromContext(context.Background(), logger, resolver)
150 _ = span.Log("msg", "fallback spanlogger")
151
152 expect := []map[string]string{
153 {"method": "test", "msg": "original spanlogger"},
154 {"msg": "restored spanlogger"},
155 {"msg": "fallback spanlogger"},
156 }
157 require.Equal(t, expect, logged)
158}
159
160func TestOTelSpanLogger_SetSpanAndLogTag(t *testing.T) {
161 t.Cleanup(spanExporter.Reset)

Callers

nothing calls this directly

Calls 7

NewMultiResolverFunction · 0.92
NewOTelFunction · 0.85
FromContextFunction · 0.85
SpanContextMethod · 0.80
StringMethod · 0.65
EqualMethod · 0.45
LogMethod · 0.45

Tested by

no test coverage detected