[Test] TSDB: let BenchmarkAddExemplar reuse slots

Test with different amounts of capacity and exemplars, so that sometimes
new exemplars are evicting older exemplars.

Signed-off-by: Bryan Boreham <bjboreham@gmail.com>
This commit is contained in:
Bryan Boreham 2024-05-11 16:43:34 +01:00
parent 6683895620
commit 929fbf860e

View file

@ -415,27 +415,29 @@ func BenchmarkAddExemplar(b *testing.B) {
// before adding. // before adding.
exLabels := labels.FromStrings("trace_id", "89620921") exLabels := labels.FromStrings("trace_id", "89620921")
for _, n := range []int{10000, 100000, 1000000} { for _, capacity := range []int{1000, 10000, 100000} {
b.Run(strconv.Itoa(n), func(b *testing.B) { for _, n := range []int{10000, 100000, 1000000} {
for j := 0; j < b.N; j++ { b.Run(fmt.Sprintf("%d/%d", n, capacity), func(b *testing.B) {
b.StopTimer() for j := 0; j < b.N; j++ {
exs, err := NewCircularExemplarStorage(int64(n), eMetrics) b.StopTimer()
require.NoError(b, err) exs, err := NewCircularExemplarStorage(int64(capacity), eMetrics)
es := exs.(*CircularExemplarStorage) require.NoError(b, err)
var l labels.Labels es := exs.(*CircularExemplarStorage)
b.StartTimer() var l labels.Labels
b.StartTimer()
for i := 0; i < n; i++ { for i := 0; i < n; i++ {
if i%100 == 0 { if i%100 == 0 {
l = labels.FromStrings("service", strconv.Itoa(i)) l = labels.FromStrings("service", strconv.Itoa(i))
} }
err = es.AddExemplar(l, exemplar.Exemplar{Value: float64(i), Ts: int64(i), Labels: exLabels}) err = es.AddExemplar(l, exemplar.Exemplar{Value: float64(i), Ts: int64(i), Labels: exLabels})
if err != nil { if err != nil {
require.NoError(b, err) require.NoError(b, err)
}
} }
} }
} })
}) }
} }
} }