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 }