(t *testing.T)
| 235 | } |
| 236 | |
| 237 | func TestBasicLifecycler_UnregisterOnStop(t *testing.T) { |
| 238 | ctx := context.Background() |
| 239 | cfg := prepareBasicLifecyclerConfig() |
| 240 | lifecycler, delegate, store, err := prepareBasicLifecycler(t, cfg) |
| 241 | require.NoError(t, err) |
| 242 | |
| 243 | delegate.onRegister = func(_ *BasicLifecycler, _ Desc, _ bool, _ string, _ InstanceDesc) (InstanceState, Tokens) { |
| 244 | return ACTIVE, Tokens{1, 2, 3, 4, 5} |
| 245 | } |
| 246 | delegate.onStopping = func(_ *BasicLifecycler) { |
| 247 | assert.Equal(t, services.Stopping, lifecycler.State()) |
| 248 | } |
| 249 | |
| 250 | require.NoError(t, services.StartAndAwaitRunning(ctx, lifecycler)) |
| 251 | assert.Equal(t, ACTIVE, lifecycler.GetState()) |
| 252 | assert.Equal(t, Tokens{1, 2, 3, 4, 5}, lifecycler.GetTokens()) |
| 253 | assert.True(t, lifecycler.IsRegistered()) |
| 254 | assert.NotZero(t, lifecycler.GetRegisteredAt()) |
| 255 | assert.Equal(t, float64(cfg.NumTokens), testutil.ToFloat64(lifecycler.metrics.tokensOwned)) |
| 256 | assert.Equal(t, float64(cfg.NumTokens), testutil.ToFloat64(lifecycler.metrics.tokensToOwn)) |
| 257 | |
| 258 | require.NoError(t, services.StopAndAwaitTerminated(ctx, lifecycler)) |
| 259 | assert.Equal(t, PENDING, lifecycler.GetState()) |
| 260 | assert.Equal(t, Tokens{}, lifecycler.GetTokens()) |
| 261 | assert.False(t, lifecycler.IsRegistered()) |
| 262 | assert.Zero(t, lifecycler.GetRegisteredAt()) |
| 263 | assert.Equal(t, float64(0), testutil.ToFloat64(lifecycler.metrics.tokensOwned)) |
| 264 | assert.Equal(t, float64(0), testutil.ToFloat64(lifecycler.metrics.tokensToOwn)) |
| 265 | |
| 266 | // Assert on the instance removed from the ring. |
| 267 | _, ok := getInstanceFromStore(t, store, testInstanceID) |
| 268 | assert.False(t, ok) |
| 269 | } |
| 270 | |
| 271 | func TestBasicLifecycler_KeepInTheRingOnStop(t *testing.T) { |
| 272 | ctx := context.Background() |
nothing calls this directly
no test coverage detected