github.com/treeverse/lakefs@v1.24.1-0.20240520134607-95648127bfb0/pkg/testutil/stress/histogram_test.go (about)

     1  package stress_test
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/treeverse/lakefs/pkg/testutil/stress"
     7  )
     8  
     9  func TestHistogram_Add(t *testing.T) {
    10  	tbl := []struct {
    11  		Name     string
    12  		Buckets  []int64
    13  		Inputs   []int64
    14  		Expected string
    15  	}{
    16  		{
    17  			Name:     "simple_add",
    18  			Buckets:  []int64{1, 5, 10},
    19  			Inputs:   []int64{1, 343, 2, 1},
    20  			Expected: "1\t2\n5\t3\n10\t3\nmin\t1\nmax\t343\ntotal\t4\n",
    21  		},
    22  		{
    23  			Name:     "one_bucket",
    24  			Buckets:  []int64{1},
    25  			Inputs:   []int64{1, 343, 2, 1},
    26  			Expected: "1\t2\nmin\t1\nmax\t343\ntotal\t4\n",
    27  		},
    28  		{
    29  			Name:     "no_input",
    30  			Buckets:  []int64{1, 5, 10},
    31  			Inputs:   []int64{},
    32  			Expected: "1\t0\n5\t0\n10\t0\nmin\t0\nmax\t0\ntotal\t0\n",
    33  		},
    34  	}
    35  
    36  	for _, cas := range tbl {
    37  		t.Run(cas.Name, func(t *testing.T) {
    38  			h := stress.NewHistogram(cas.Buckets)
    39  			for _, v := range cas.Inputs {
    40  				h.Add(v)
    41  			}
    42  			str := h.String()
    43  			if str != cas.Expected {
    44  				t.Fatalf("expected '%s' got '%s'", cas.Expected, h.String())
    45  			}
    46  		})
    47  	}
    48  }