(t *testing.T)
| 113 | } |
| 114 | |
| 115 | func TestLifecycler_TokenGenerator(t *testing.T) { |
| 116 | t.Parallel() |
| 117 | |
| 118 | ringStore, closer := consul.NewInMemoryClient(GetCodec(), log.NewNopLogger(), nil) |
| 119 | t.Cleanup(func() { assert.NoError(t, closer.Close()) }) |
| 120 | |
| 121 | var ringConfig Config |
| 122 | flagext.DefaultValues(&ringConfig) |
| 123 | ringConfig.KVStore.Mock = ringStore |
| 124 | |
| 125 | cfg := testLifecyclerConfig(ringConfig, "instance-1") |
| 126 | |
| 127 | spreadMinimizingTokenGenerator, err := NewSpreadMinimizingTokenGenerator(cfg.ID, cfg.Zone, []string{zone(1), zone(2), zone(3)}, true) |
| 128 | require.NoError(t, err) |
| 129 | |
| 130 | tests := []TokenGenerator{nil, initTokenGenerator(t), spreadMinimizingTokenGenerator} |
| 131 | |
| 132 | for _, testData := range tests { |
| 133 | cfg.RingTokenGenerator = testData |
| 134 | lifecycler, err := NewLifecycler(cfg, &nopFlushTransferer{}, "ingester", ringKey, true, log.NewNopLogger(), nil) |
| 135 | require.NoError(t, err) |
| 136 | if testData == nil { |
| 137 | // If cfg.RingTokenGenerator is empty, RandomTokenGenerator is used |
| 138 | tokenGenerator, ok := lifecycler.tokenGenerator.(*RandomTokenGenerator) |
| 139 | require.True(t, ok) |
| 140 | require.NotNil(t, tokenGenerator) |
| 141 | } else { |
| 142 | // If cfg.RingTokenGenerator is not empty, it is used |
| 143 | require.NotNil(t, lifecycler.tokenGenerator) |
| 144 | require.Equal(t, testData, lifecycler.tokenGenerator) |
| 145 | } |
| 146 | } |
| 147 | } |
| 148 | |
| 149 | func TestLifecycler_HealthyInstancesCount(t *testing.T) { |
| 150 | t.Parallel() |
nothing calls this directly
no test coverage detected