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  }