(ring *Ring)
| 230 | } |
| 231 | |
| 232 | func addInstancesPeriodically(ring *Ring) chan struct{} { |
| 233 | // Keep changing the ring. |
| 234 | done := make(chan struct{}) |
| 235 | |
| 236 | go func() { |
| 237 | for { |
| 238 | select { |
| 239 | case <-done: |
| 240 | return |
| 241 | case <-time.After(time.Second): |
| 242 | ring.mtx.Lock() |
| 243 | ringDesc := ring.ringDesc |
| 244 | instanceID := fmt.Sprintf("127.0.0.%d", len(ringDesc.Ingesters)+1) |
| 245 | ringDesc.Ingesters[instanceID] = InstanceDesc{Id: instanceID, Addr: instanceID, State: ACTIVE, Timestamp: time.Now().Unix()} |
| 246 | ring.ringDesc = ringDesc |
| 247 | ring.ringTokens = ringDesc.GetTokens() |
| 248 | ring.ringTokensByZone = ringDesc.getTokensByZone() |
| 249 | ring.ringInstanceByToken = ringDesc.getTokensInfo() |
| 250 | ring.ringZones = getZones(ringDesc.getTokensByZone()) |
| 251 | |
| 252 | ring.mtx.Unlock() |
| 253 | } |
| 254 | } |
| 255 | }() |
| 256 | return done |
| 257 | } |
| 258 | |
| 259 | func TestWaitRingStability_ShouldReturnErrorIfInstancesAddedAndMaxWaitingIsReached(t *testing.T) { |
| 260 | t.Parallel() |
no test coverage detected