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

Function TestWaitBeforeJoining

ring/lifecycler_test.go:1733–1847  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

1731}
1732
1733func TestWaitBeforeJoining(t *testing.T) {
1734 t.Parallel()
1735
1736 ringStore, closer := consul.NewInMemoryClient(GetCodec(), log.NewNopLogger(), nil)
1737 t.Cleanup(func() { assert.NoError(t, closer.Close()) })
1738
1739 var ringConfig Config
1740 flagext.DefaultValues(&ringConfig)
1741 ringConfig.KVStore.Mock = ringStore
1742
1743 r, err := New(ringConfig, "ingester", ringKey, log.NewNopLogger(), nil)
1744 require.NoError(t, err)
1745 require.NoError(t, services.StartAndAwaitRunning(context.Background(), r))
1746 defer services.StopAndAwaitTerminated(context.Background(), r) //nolint:errcheck
1747
1748 err = r.KVClient.CAS(context.Background(), ringKey, func(interface{}) (interface{}, bool, error) {
1749 r := &Desc{
1750 Ingesters: map[string]InstanceDesc{
1751 instanceName(0, 1): {
1752 State: ACTIVE,
1753 Tokens: []uint32{1, 2, 3},
1754 },
1755 instanceName(1, 1): {
1756 State: ACTIVE,
1757 Tokens: []uint32{4, 5, 6},
1758 },
1759 },
1760 }
1761
1762 return r, true, nil
1763 })
1764 require.NoError(t, err)
1765
1766 targetZone := zone(1)
1767 spreadMinimizingZones := []string{zone(1), zone(2), zone(3)}
1768 canJoinTimeout := 5 * time.Second
1769 spreadMinimizingTokenGenerator := func(targetInstanceID string, canJoinEnabled bool) TokenGenerator {
1770 tokenGenerator, err := NewSpreadMinimizingTokenGenerator(targetInstanceID, targetZone, spreadMinimizingZones, canJoinEnabled)
1771 require.NoError(t, err)
1772 return tokenGenerator
1773 }
1774
1775 tests := map[string]struct {
1776 targetInstanceID string
1777 tokenGenerator TokenGenerator
1778 timeoutRequired bool
1779 errorRequired bool
1780 }{
1781 "RandomTokenGenerator never returns errors": {
1782 targetInstanceID: instanceName(3, 1),
1783 tokenGenerator: initTokenGenerator(t),
1784 },
1785 "SpreadMinimizingTokenGenerator with CanJoinEnabled=false never returns errors": {
1786 targetInstanceID: instanceName(3, 1),
1787 tokenGenerator: spreadMinimizingTokenGenerator(instanceName(2, 1), false),
1788 },
1789 "SpreadMinimizingTokenGenerator with CanJoinEnabled=true returns nil when the first instance joins": {
1790 targetInstanceID: instanceName(0, 1),

Callers

nothing calls this directly

Calls 15

initRingMethod · 0.95
waitBeforeJoiningMethod · 0.95
NewInMemoryClientFunction · 0.92
DefaultValuesFunction · 0.92
StartAndAwaitRunningFunction · 0.92
StopAndAwaitTerminatedFunction · 0.92
GetCodecFunction · 0.85
instanceNameFunction · 0.85
initTokenGeneratorFunction · 0.85
testLifecyclerConfigFunction · 0.85
NewLifecyclerFunction · 0.85

Tested by

no test coverage detected