MCPcopy
hub / github.com/grafana/dskit / TestCASNoChange

Function TestCASNoChange

kv/memberlist/memberlist_client_test.go:498–528  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

496}
497
498func TestCASNoChange(t *testing.T) {
499 t.Parallel()
500
501 withFixtures(t, func(t *testing.T, kv *Client) {
502 err := cas(kv, key, func(in *data) (*data, bool, error) {
503 if in == nil {
504 in = &data{Members: map[string]member{}}
505 }
506
507 in.Members["hello"] = member{
508 Timestamp: time.Now().Unix(),
509 Tokens: generateTokens(128),
510 State: JOINING,
511 }
512
513 return in, true, nil
514 })
515 require.NoError(t, err)
516
517 startTime := time.Now()
518 calls := 0
519 err = casWithErr(context.Background(), kv, key, func(d *data) (*data, bool, error) {
520 calls++
521 return d, true, nil
522 })
523 require.EqualError(t, err, "failed to CAS-update key test: no change detected")
524 require.Equal(t, maxCasRetries, calls)
525 // if there was no change, CAS sleeps before every retry
526 require.True(t, time.Since(startTime) >= (maxCasRetries-1)*noChangeDetectedRetrySleep)
527 })
528}
529
530func TestCASNoChangeShortTimeout(t *testing.T) {
531 withFixtures(t, func(t *testing.T, kv *Client) {

Callers

nothing calls this directly

Calls 5

casFunction · 0.85
generateTokensFunction · 0.85
casWithErrFunction · 0.85
withFixturesFunction · 0.70
EqualMethod · 0.45

Tested by

no test coverage detected