github.com/rudderlabs/rudder-go-kit@v0.30.0/stats/stats_test.go (about) 1 package stats 2 3 import ( 4 "context" 5 "testing" 6 7 "github.com/stretchr/testify/require" 8 9 "github.com/rudderlabs/rudder-go-kit/config" 10 "github.com/rudderlabs/rudder-go-kit/logger" 11 svcMetric "github.com/rudderlabs/rudder-go-kit/stats/metric" 12 ) 13 14 func TestTagsType(t *testing.T) { 15 tags := Tags{ 16 "b": "value1", 17 "a": "value2", 18 } 19 20 t.Run("strings method", func(t *testing.T) { 21 for i := 0; i < 100; i++ { // just making sure we are not just lucky with the order 22 require.Equal(t, []string{"a", "value2", "b", "value1"}, tags.Strings()) 23 } 24 }) 25 26 t.Run("string method", func(t *testing.T) { 27 require.Equal(t, "a,value2,b,value1", tags.String()) 28 }) 29 30 t.Run("special character replacement", func(t *testing.T) { 31 specialTags := Tags{ 32 "b:1": "value1:1", 33 "a:1": "value2:2", 34 } 35 require.Equal(t, []string{"a-1", "value2-2", "b-1", "value1-1"}, specialTags.Strings()) 36 }) 37 38 t.Run("empty tags", func(t *testing.T) { 39 emptyTags := Tags{} 40 require.Nil(t, emptyTags.Strings()) 41 require.Equal(t, "", emptyTags.String()) 42 }) 43 } 44 45 func TestUnstartedShouldNotPanicWhileTracing(t *testing.T) { 46 require.NotPanics(t, func() { 47 tr := Default.NewTracer("test") 48 _, span := tr.Start(context.Background(), "span-name", SpanKindInternal) 49 span.End() 50 }) 51 require.NotPanics(t, func() { 52 d := NewStats(config.New(), logger.Default, svcMetric.Instance) 53 tr := d.NewTracer("test") 54 _, span := tr.Start(context.Background(), "span-name", SpanKindInternal) 55 span.End() 56 }) 57 }