| 330 | } |
| 331 | |
| 332 | func TestDesc_TokensFor(t *testing.T) { |
| 333 | tests := map[string]struct { |
| 334 | desc *Desc |
| 335 | expectedMine Tokens |
| 336 | expectedAll Tokens |
| 337 | }{ |
| 338 | "empty ring": { |
| 339 | desc: &Desc{Ingesters: map[string]InstanceDesc{}}, |
| 340 | expectedMine: Tokens(nil), |
| 341 | expectedAll: Tokens{}, |
| 342 | }, |
| 343 | "single zone": { |
| 344 | desc: &Desc{Ingesters: map[string]InstanceDesc{ |
| 345 | "instance-1": {Addr: "127.0.0.1", Tokens: []uint32{1, 5}, Zone: ""}, |
| 346 | "instance-2": {Addr: "127.0.0.1", Tokens: []uint32{2, 4}, Zone: ""}, |
| 347 | "instance-3": {Addr: "127.0.0.1", Tokens: []uint32{3, 6}, Zone: ""}, |
| 348 | }}, |
| 349 | expectedMine: Tokens{1, 5}, |
| 350 | expectedAll: Tokens{1, 2, 3, 4, 5, 6}, |
| 351 | }, |
| 352 | "multiple zones": { |
| 353 | desc: &Desc{Ingesters: map[string]InstanceDesc{ |
| 354 | "instance-1": {Addr: "127.0.0.1", Tokens: []uint32{1, 5}, Zone: "zone-1"}, |
| 355 | "instance-2": {Addr: "127.0.0.1", Tokens: []uint32{2, 4}, Zone: "zone-1"}, |
| 356 | "instance-3": {Addr: "127.0.0.1", Tokens: []uint32{3, 6}, Zone: "zone-2"}, |
| 357 | }}, |
| 358 | expectedMine: Tokens{1, 5}, |
| 359 | expectedAll: Tokens{1, 2, 3, 4, 5, 6}, |
| 360 | }, |
| 361 | } |
| 362 | |
| 363 | for testName, testData := range tests { |
| 364 | t.Run(testName, func(t *testing.T) { |
| 365 | actualMine, actualAll := testData.desc.TokensFor("instance-1") |
| 366 | assert.Equal(t, testData.expectedMine, actualMine) |
| 367 | assert.Equal(t, testData.expectedAll, actualAll) |
| 368 | }) |
| 369 | } |
| 370 | } |
| 371 | |
| 372 | func TestDesc_RingsCompare(t *testing.T) { |
| 373 | tests := map[string]struct { |