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

Function TestBasicLifecycler_KeepInTheRingOnStop

ring/basic_lifecycler_test.go:271–311  ·  ring/basic_lifecycler_test.go::TestBasicLifecycler_KeepInTheRingOnStop
(t *testing.T)

Source from the content-addressed store, hash-verified

269}
270
271func TestBasicLifecycler_KeepInTheRingOnStop(t *testing.T) {
272 ctx := context.Background()
273 cfg := prepareBasicLifecyclerConfig()
274 cfg.KeepInstanceInTheRingOnShutdown = true
275
276 lifecycler, delegate, store, err := prepareBasicLifecycler(t, cfg)
277 require.NoError(t, err)
278 require.Equal(t, cfg.KeepInstanceInTheRingOnShutdown, lifecycler.ShouldKeepInstanceInTheRingOnShutdown())
279
280 delegate.onRegister = func(_ *BasicLifecycler, _ Desc, _ bool, _ string, _ InstanceDesc) (InstanceState, Tokens) {
281 return ACTIVE, Tokens{1, 2, 3, 4, 5}
282 }
283 delegate.onStopping = func(lifecycler *BasicLifecycler) {
284 require.NoError(t, lifecycler.changeState(context.Background(), LEAVING))
285 }
286
287 require.NoError(t, services.StartAndAwaitRunning(ctx, lifecycler))
288 assert.Equal(t, ACTIVE, lifecycler.GetState())
289 assert.Equal(t, Tokens{1, 2, 3, 4, 5}, lifecycler.GetTokens())
290 assert.True(t, lifecycler.IsRegistered())
291 assert.NotZero(t, lifecycler.GetRegisteredAt())
292 assert.Equal(t, float64(cfg.NumTokens), testutil.ToFloat64(lifecycler.metrics.tokensOwned))
293 assert.Equal(t, float64(cfg.NumTokens), testutil.ToFloat64(lifecycler.metrics.tokensToOwn))
294
295 require.NoError(t, services.StopAndAwaitTerminated(ctx, lifecycler))
296 assert.Equal(t, LEAVING, lifecycler.GetState())
297 assert.Equal(t, Tokens{1, 2, 3, 4, 5}, lifecycler.GetTokens())
298 assert.True(t, lifecycler.IsRegistered())
299 assert.NotZero(t, lifecycler.GetRegisteredAt())
300 assert.Equal(t, float64(cfg.NumTokens), testutil.ToFloat64(lifecycler.metrics.tokensOwned))
301 assert.Equal(t, float64(cfg.NumTokens), testutil.ToFloat64(lifecycler.metrics.tokensToOwn))
302
303 // Assert on the instance is in the ring.
304 inst, ok := getInstanceFromStore(t, store, testInstanceID)
305 assert.True(t, ok)
306 assert.Equal(t, cfg.ID, inst.GetId())
307 assert.Equal(t, cfg.Addr, inst.GetAddr())
308 assert.Equal(t, LEAVING, inst.GetState())
309 assert.Equal(t, Tokens{1, 2, 3, 4, 5}, Tokens(inst.GetTokens()))
310 assert.Equal(t, cfg.Zone, inst.GetZone())
311}
312
313func TestBasicLifecycler_UnregisterFromTheRingOnStop(t *testing.T) {
314 ctx := context.Background()

Callers

nothing calls this directly

Calls 15

StartAndAwaitRunningFunction · 0.92
StopAndAwaitTerminatedFunction · 0.92
prepareBasicLifecyclerFunction · 0.85
getInstanceFromStoreFunction · 0.85
TokensTypeAlias · 0.85
IsRegisteredMethod · 0.80
GetAddrMethod · 0.80
GetZoneMethod · 0.80
EqualMethod · 0.45
changeStateMethod · 0.45

Tested by

no test coverage detected