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

Function TestOTelSpanLoggerAwareCaller

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

Source from the content-addressed store, hash-verified

265}
266
267func TestOTelSpanLoggerAwareCaller(t *testing.T) {
268 testCases := map[string]func(w io.Writer) log.Logger{
269 // This is based on Mimir's default logging configuration: https://github.com/grafana/mimir/blob/50d1c27b4ad82b265ff5a865345bec2d726f64ef/pkg/util/log/log.go#L45-L46
270 "default logger": func(w io.Writer) log.Logger {
271 logger := dskit_log.NewGoKitWithWriter("logfmt", w)
272 logger = log.With(logger, "ts", log.DefaultTimestampUTC, "caller", Caller(5))
273 logger = level.NewFilter(logger, level.AllowAll())
274 return logger
275 },
276
277 //This is based on Mimir's logging configuration with rate-limiting enabled: https://github.com/grafana/mimir/blob/50d1c27b4ad82b265ff5a865345bec2d726f64ef/pkg/util/log/log.go#L42-L43
278 "rate-limited logger": func(w io.Writer) log.Logger {
279 logger := dskit_log.NewGoKitWithWriter("logfmt", w)
280 logger = log.With(logger, "ts", log.DefaultTimestampUTC, "caller", Caller(6))
281 logger = dskit_log.NewRateLimitedLogger(logger, 1000, 1000, nil)
282 logger = level.NewFilter(logger, level.AllowAll())
283 return logger
284 },
285
286 "default logger that has been wrapped with further information": func(w io.Writer) log.Logger {
287 logger := dskit_log.NewGoKitWithWriter("logfmt", w)
288 logger = log.With(logger, "ts", log.DefaultTimestampUTC, "caller", Caller(5))
289 logger = level.NewFilter(logger, level.AllowAll())
290 logger = log.With(logger, "user", "user-1")
291 return logger
292 },
293 }
294
295 resolver := tenant.NewMultiResolver()
296
297 setupTest := func(t *testing.T, loggerFactory func(io.Writer) log.Logger) (*bytes.Buffer, *SpanLogger) {
298 t.Cleanup(spanExporter.Reset)
299
300 ctx, _ := tracer.Start(context.Background(), "test")
301
302 buf := bytes.NewBuffer(nil)
303 logger := loggerFactory(buf)
304 spanLogger := FromContext(ctx, logger, resolver)
305 require.NotNil(t, spanLogger.otelSpan)
306 require.Nil(t, spanLogger.opentracingSpan)
307
308 return buf, spanLogger
309 }
310
311 requireSpanHasTwoLogLinesWithoutCaller := func(t *testing.T, span tracetest.SpanStub, extraAttributes ...attribute.KeyValue) {
312 evs := span.Events
313 require.Len(t, evs, 2)
314
315 require.Equal(t, "log", evs[0].Name)
316 require.Equal(t, "log", evs[1].Name)
317 require.Equal(t, append(slices.Clone(extraAttributes), attribute.String("msg", "this is a test")), evs[0].Attributes)
318 require.Equal(t, append(slices.Clone(extraAttributes), attribute.String("msg", "this is another test")), evs[1].Attributes)
319 }
320
321 toCallerInfo := func(path string, lineNumber int) string {
322 fileName := filepath.Base(path)
323 return fmt.Sprintf("%s:%v", fileName, lineNumber)
324 }

Callers

nothing calls this directly

Calls 15

NewMultiResolverFunction · 0.92
CallerFunction · 0.85
FromContextFunction · 0.85
WithMethod · 0.80
RunMethod · 0.80
DebugLogMethod · 0.80
StartMethod · 0.65
CloneMethod · 0.65
StringMethod · 0.65
LenMethod · 0.45
EqualMethod · 0.45
LogMethod · 0.45

Tested by

no test coverage detected