github.com/muhammadn/cortex@v1.9.1-0.20220510110439-46bb7000d03d/pkg/util/spanlogger/spanlogger_test.go (about) 1 package spanlogger 2 3 import ( 4 "context" 5 "testing" 6 7 "github.com/go-kit/log" 8 "github.com/opentracing/opentracing-go" 9 "github.com/opentracing/opentracing-go/mocktracer" 10 "github.com/pkg/errors" 11 "github.com/stretchr/testify/require" 12 "github.com/weaveworks/common/user" 13 ) 14 15 func TestSpanLogger_Log(t *testing.T) { 16 span, ctx := New(context.Background(), "test", "bar") 17 _ = span.Log("foo") 18 newSpan := FromContext(ctx) 19 require.Equal(t, span.Span, newSpan.Span) 20 _ = newSpan.Log("bar") 21 noSpan := FromContext(context.Background()) 22 _ = noSpan.Log("foo") 23 require.Error(t, noSpan.Error(errors.New("err"))) 24 require.NoError(t, noSpan.Error(nil)) 25 } 26 27 func TestSpanLogger_CustomLogger(t *testing.T) { 28 var logged [][]interface{} 29 var logger funcLogger = func(keyvals ...interface{}) error { 30 logged = append(logged, keyvals) 31 return nil 32 } 33 span, ctx := NewWithLogger(context.Background(), logger, "test") 34 _ = span.Log("msg", "original spanlogger") 35 36 span = FromContextWithFallback(ctx, log.NewNopLogger()) 37 _ = span.Log("msg", "restored spanlogger") 38 39 span = FromContextWithFallback(context.Background(), logger) 40 _ = span.Log("msg", "fallback spanlogger") 41 42 expect := [][]interface{}{ 43 {"method", "test", "msg", "original spanlogger"}, 44 {"msg", "restored spanlogger"}, 45 {"msg", "fallback spanlogger"}, 46 } 47 require.Equal(t, expect, logged) 48 } 49 50 func TestSpanCreatedWithTenantTag(t *testing.T) { 51 mockSpan := createSpan(user.InjectOrgID(context.Background(), "team-a")) 52 53 require.Equal(t, []string{"team-a"}, mockSpan.Tag(TenantIDTagName)) 54 } 55 56 func TestSpanCreatedWithoutTenantTag(t *testing.T) { 57 mockSpan := createSpan(context.Background()) 58 59 _, exist := mockSpan.Tags()[TenantIDTagName] 60 require.False(t, exist) 61 } 62 63 func createSpan(ctx context.Context) *mocktracer.MockSpan { 64 mockTracer := mocktracer.New() 65 opentracing.SetGlobalTracer(mockTracer) 66 67 logger, _ := New(ctx, "name") 68 return logger.Span.(*mocktracer.MockSpan) 69 } 70 71 type funcLogger func(keyvals ...interface{}) error 72 73 func (f funcLogger) Log(keyvals ...interface{}) error { 74 return f(keyvals...) 75 }