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

Function TestDelegatesChain

pkg/ring/basic_lifecycler_delegates_test.go:191–234  ·  view source on GitHub ↗

TestDelegatesChain tests chaining all provided delegates together.

(t *testing.T)

Source from the content-addressed store, hash-verified

189
190// TestDelegatesChain tests chaining all provided delegates together.
191func TestDelegatesChain(t *testing.T) {
192 onStoppingCalled := false
193
194 // Create a temporary file and immediately delete it.
195 tokensFile, err := os.CreateTemp("", "tokens-*")
196 require.NoError(t, err)
197 require.NoError(t, os.Remove(tokensFile.Name()))
198
199 // Chain delegates together.
200 var chain BasicLifecyclerDelegate
201 chain = &mockDelegate{
202 onRegister: func(lifecycler *BasicLifecycler, ringDesc Desc, instanceExists bool, instanceID string, instanceDesc InstanceDesc) (InstanceState, Tokens) {
203 assert.False(t, instanceExists)
204 return JOINING, Tokens{1, 2, 3, 4, 5}
205 },
206 onStopping: func(l *BasicLifecycler) {
207 assert.Equal(t, LEAVING, l.GetState())
208 onStoppingCalled = true
209 },
210 }
211
212 chain = NewTokensPersistencyDelegate(tokensFile.Name(), ACTIVE, chain, log.NewNopLogger())
213 chain = NewLeaveOnStoppingDelegate(chain, log.NewNopLogger())
214 chain = NewAutoForgetDelegate(time.Minute, chain, log.NewNopLogger())
215
216 ctx := context.Background()
217 cfg := prepareBasicLifecyclerConfig()
218 lifecycler, _, err := prepareBasicLifecyclerWithDelegate(t, cfg, chain)
219 require.NoError(t, err)
220 defer services.StopAndAwaitTerminated(ctx, lifecycler) //nolint:errcheck
221
222 require.NoError(t, services.StartAndAwaitRunning(ctx, lifecycler))
223 assert.Equal(t, JOINING, lifecycler.GetState())
224 assert.Equal(t, Tokens{1, 2, 3, 4, 5}, lifecycler.GetTokens())
225 assert.True(t, lifecycler.IsRegistered())
226
227 require.NoError(t, services.StopAndAwaitTerminated(ctx, lifecycler))
228 assert.True(t, onStoppingCalled)
229
230 // Ensure tokens have been stored.
231 tokenFile, err := LoadTokenFile(tokensFile.Name())
232 require.NoError(t, err)
233 assert.Equal(t, Tokens{1, 2, 3, 4, 5}, tokenFile.Tokens)
234}
235
236func TestAutoForgetDelegate(t *testing.T) {
237 const forgetPeriod = time.Minute

Callers

nothing calls this directly

Calls 13

StopAndAwaitTerminatedFunction · 0.92
StartAndAwaitRunningFunction · 0.92
NewAutoForgetDelegateFunction · 0.85
LoadTokenFileFunction · 0.85
IsRegisteredMethod · 0.80
NameMethod · 0.65
EqualMethod · 0.65
GetStateMethod · 0.45

Tested by

no test coverage detected