64 lines
1.6 KiB
Go
64 lines
1.6 KiB
Go
package logging_test
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
"galaxy/lobby/internal/logging"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
"go.opentelemetry.io/otel/trace"
|
|
)
|
|
|
|
func TestRequestIDRoundTrip(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
ctx := logging.WithRequestID(context.Background(), "rid-1")
|
|
assert.Equal(t, "rid-1", logging.RequestIDFromContext(ctx))
|
|
|
|
assert.Equal(t, "", logging.RequestIDFromContext(context.Background()))
|
|
}
|
|
|
|
func TestWithRequestIDIgnoresEmptyValue(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
parent := context.Background()
|
|
ctx := logging.WithRequestID(parent, "")
|
|
assert.Equal(t, parent, ctx)
|
|
}
|
|
|
|
func TestContextAttrsIncludesRequestID(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
ctx := logging.WithRequestID(context.Background(), "rid-2")
|
|
attrs := logging.ContextAttrs(ctx)
|
|
require.Contains(t, attrs, "request_id")
|
|
require.Contains(t, attrs, "rid-2")
|
|
}
|
|
|
|
func TestContextAttrsIncludesTraceID(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
traceID, err := trace.TraceIDFromHex("0123456789abcdef0123456789abcdef")
|
|
require.NoError(t, err)
|
|
spanID, err := trace.SpanIDFromHex("fedcba9876543210")
|
|
require.NoError(t, err)
|
|
spanContext := trace.NewSpanContext(trace.SpanContextConfig{
|
|
TraceID: traceID,
|
|
SpanID: spanID,
|
|
})
|
|
ctx := trace.ContextWithSpanContext(context.Background(), spanContext)
|
|
|
|
attrs := logging.ContextAttrs(ctx)
|
|
require.Contains(t, attrs, "trace_id")
|
|
require.Contains(t, attrs, traceID.String())
|
|
require.Contains(t, attrs, "span_id")
|
|
require.Contains(t, attrs, spanID.String())
|
|
}
|
|
|
|
func TestContextAttrsEmptyContextReturnsNil(t *testing.T) {
|
|
t.Parallel()
|
|
assert.Nil(t, logging.ContextAttrs(context.Background()))
|
|
}
|