github.com/yankunsam/loki/v2@v2.6.3-0.20220817130409-389df5235c27/pkg/logproto/types_test.go (about)

     1  package logproto
     2  
     3  import (
     4  	"testing"
     5  	time "time"
     6  
     7  	"github.com/stretchr/testify/require"
     8  )
     9  
    10  var (
    11  	now    = time.Now().UTC()
    12  	line   = `level=info ts=2019-12-12T15:00:08.325Z caller=compact.go:441 component=tsdb msg="compact blocks" count=3 mint=1576130400000 maxt=1576152000000 ulid=01DVX9ZHNM71GRCJS7M34Q0EV7 sources="[01DVWNC6NWY1A60AZV3Z6DGS65 01DVWW7XXX75GHA6ZDTD170CSZ 01DVX33N5W86CWJJVRPAVXJRWJ]" duration=2.897213221s`
    13  	stream = Stream{
    14  		Labels: `{job="foobar", cluster="foo-central1", namespace="bar", container_name="buzz"}`,
    15  		Hash:   1234*10 ^ 9,
    16  		Entries: []Entry{
    17  			{now, line},
    18  			{now.Add(1 * time.Second), line},
    19  			{now.Add(2 * time.Second), line},
    20  			{now.Add(3 * time.Second), line},
    21  		},
    22  	}
    23  	streamAdapter = StreamAdapter{
    24  		Labels: `{job="foobar", cluster="foo-central1", namespace="bar", container_name="buzz"}`,
    25  		Hash:   1234*10 ^ 9,
    26  		Entries: []EntryAdapter{
    27  			{now, line},
    28  			{now.Add(1 * time.Second), line},
    29  			{now.Add(2 * time.Second), line},
    30  			{now.Add(3 * time.Second), line},
    31  		},
    32  	}
    33  )
    34  
    35  func TestStream(t *testing.T) {
    36  	avg := testing.AllocsPerRun(200, func() {
    37  		b, err := stream.Marshal()
    38  		require.NoError(t, err)
    39  
    40  		var new Stream
    41  		err = new.Unmarshal(b)
    42  		require.NoError(t, err)
    43  
    44  		require.Equal(t, stream, new)
    45  	})
    46  	t.Log("avg allocs per run:", avg)
    47  }
    48  
    49  func TestStreamAdapter(t *testing.T) {
    50  	avg := testing.AllocsPerRun(200, func() {
    51  		b, err := streamAdapter.Marshal()
    52  		require.NoError(t, err)
    53  
    54  		var new StreamAdapter
    55  		err = new.Unmarshal(b)
    56  		require.NoError(t, err)
    57  
    58  		require.Equal(t, streamAdapter, new)
    59  	})
    60  	t.Log("avg allocs per run:", avg)
    61  }
    62  
    63  func TestCompatibility(t *testing.T) {
    64  	b, err := stream.Marshal()
    65  	require.NoError(t, err)
    66  
    67  	var adapter StreamAdapter
    68  	err = adapter.Unmarshal(b)
    69  	require.NoError(t, err)
    70  	require.Equal(t, streamAdapter, adapter)
    71  
    72  	ba, err := adapter.Marshal()
    73  	require.NoError(t, err)
    74  	require.Equal(t, b, ba)
    75  
    76  	var new Stream
    77  	err = new.Unmarshal(ba)
    78  	require.NoError(t, err)
    79  
    80  	require.Equal(t, stream, new)
    81  }
    82  
    83  func BenchmarkStream(b *testing.B) {
    84  	b.ReportAllocs()
    85  	for n := 0; n < b.N; n++ {
    86  		by, err := stream.Marshal()
    87  		if err != nil {
    88  			b.Fatal(err)
    89  		}
    90  		var new Stream
    91  		err = new.Unmarshal(by)
    92  		if err != nil {
    93  			b.Fatal(err)
    94  		}
    95  	}
    96  }
    97  
    98  func BenchmarkStreamAdapter(b *testing.B) {
    99  	b.ReportAllocs()
   100  	for n := 0; n < b.N; n++ {
   101  		by, err := streamAdapter.Marshal()
   102  		if err != nil {
   103  			b.Fatal(err)
   104  		}
   105  		var new StreamAdapter
   106  		err = new.Unmarshal(by)
   107  		if err != nil {
   108  			b.Fatal(err)
   109  		}
   110  	}
   111  }