github.com/yankunsam/loki/v2@v2.6.3-0.20220817130409-389df5235c27/pkg/storage/stores/index/stats/stats_test.go (about)

     1  package stats
     2  
     3  import (
     4  	"sync"
     5  	"testing"
     6  
     7  	"github.com/prometheus/common/model"
     8  	"github.com/stretchr/testify/require"
     9  
    10  	"github.com/grafana/loki/pkg/storage/stores/tsdb/index"
    11  )
    12  
    13  func TestStatsBloom_Stream(t *testing.T) {
    14  	sb := BloomPool.Get()
    15  	var wg sync.WaitGroup
    16  	for i := 0; i < 40; i++ {
    17  		wg.Add(1)
    18  		go func(x int) {
    19  			sb.AddStream(model.Fingerprint(x % 2))
    20  			wg.Done()
    21  		}(i)
    22  	}
    23  	wg.Wait()
    24  
    25  	require.Equal(t, uint64(2), sb.stats.Streams)
    26  }
    27  
    28  func TestStatsBloom_Chunks(t *testing.T) {
    29  	sb := BloomPool.Get()
    30  	var wg sync.WaitGroup
    31  	for i := 0; i < 10; i++ {
    32  		wg.Add(1)
    33  		go func(x int) {
    34  			sb.AddChunk(model.Fingerprint(x%2), index.ChunkMeta{
    35  				Checksum: uint32(x) % 4,
    36  				KB:       1,
    37  				Entries:  1,
    38  			})
    39  			wg.Done()
    40  		}(i)
    41  	}
    42  	wg.Wait()
    43  
    44  	require.Equal(t, 4, int(sb.stats.Chunks))
    45  	require.Equal(t, 4<<10, int(sb.stats.Bytes))
    46  	require.Equal(t, 4, int(sb.stats.Entries))
    47  }