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

Function TestDelegatesChain

ring/basic_lifecycler_delegates_test.go:189–232  ·  view source on GitHub ↗

TestDelegatesChain tests chaining all provided delegates together.

(t *testing.T)

Source from the content-addressed store, hash-verified

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

Callers

nothing calls this directly

Calls 13

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

Tested by

no test coverage detected