MCPcopy Create free account
hub / github.com/cortexproject/cortex / assertDistancePerIngester

Function assertDistancePerIngester

pkg/ring/token_generator_test.go:179–206  ·  view source on GitHub ↗
(t testing.TB, d *Desc, tolerance float64)

Source from the content-addressed store, hash-verified

177}
178
179func assertDistancePerIngester(t testing.TB, d *Desc, tolerance float64) {
180 r := make(map[string]int64, len(d.Ingesters))
181 tokensPerAz := d.getTokensByZone()
182 numberOfIngesterPerAz := map[string]int{}
183
184 for s, desc := range d.Ingesters {
185 numberOfIngesterPerAz[desc.Zone]++
186 for _, token := range desc.Tokens {
187 index, ok := slices.BinarySearch(tokensPerAz[desc.Zone], token)
188 if !ok {
189 t.Fatal("token not found")
190 }
191 prev := index - 1
192 if prev < 0 {
193 prev = len(tokensPerAz[desc.Zone]) - 1
194 }
195 r[s] += tokenDistance(tokensPerAz[desc.Zone][prev], tokensPerAz[desc.Zone][index])
196 }
197 }
198
199 for s, desc := range d.Ingesters {
200 expectedDistance := float64(maxTokenValue / numberOfIngesterPerAz[desc.Zone])
201 realDistance := float64(r[s])
202 require.Condition(t, func() (success bool) {
203 return (1 - math.Abs(expectedDistance/realDistance)) < tolerance
204 }, "[%v] expected and real distance error is greater than %v -> %v[%v/%v]", s, tolerance, 1-math.Abs(expectedDistance/realDistance), expectedDistance, realDistance)
205 }
206}

Callers 1

Calls 2

tokenDistanceFunction · 0.85
getTokensByZoneMethod · 0.80

Tested by

no test coverage detected