| 233 | } |
| 234 | |
| 235 | func TestDesc_TokensFor(t *testing.T) { |
| 236 | tests := map[string]struct { |
| 237 | desc *Desc |
| 238 | expectedMine Tokens |
| 239 | expectedAll Tokens |
| 240 | }{ |
| 241 | "empty ring": { |
| 242 | desc: &Desc{Ingesters: map[string]InstanceDesc{}}, |
| 243 | expectedMine: Tokens(nil), |
| 244 | expectedAll: Tokens{}, |
| 245 | }, |
| 246 | "single zone": { |
| 247 | desc: &Desc{Ingesters: map[string]InstanceDesc{ |
| 248 | "instance-1": {Addr: "127.0.0.1", Tokens: []uint32{1, 5}, Zone: ""}, |
| 249 | "instance-2": {Addr: "127.0.0.1", Tokens: []uint32{2, 4}, Zone: ""}, |
| 250 | "instance-3": {Addr: "127.0.0.1", Tokens: []uint32{3, 6}, Zone: ""}, |
| 251 | }}, |
| 252 | expectedMine: Tokens{1, 5}, |
| 253 | expectedAll: Tokens{1, 2, 3, 4, 5, 6}, |
| 254 | }, |
| 255 | "multiple zones": { |
| 256 | desc: &Desc{Ingesters: map[string]InstanceDesc{ |
| 257 | "instance-1": {Addr: "127.0.0.1", Tokens: []uint32{1, 5}, Zone: "zone-1"}, |
| 258 | "instance-2": {Addr: "127.0.0.1", Tokens: []uint32{2, 4}, Zone: "zone-1"}, |
| 259 | "instance-3": {Addr: "127.0.0.1", Tokens: []uint32{3, 6}, Zone: "zone-2"}, |
| 260 | }}, |
| 261 | expectedMine: Tokens{1, 5}, |
| 262 | expectedAll: Tokens{1, 2, 3, 4, 5, 6}, |
| 263 | }, |
| 264 | } |
| 265 | |
| 266 | for testName, testData := range tests { |
| 267 | t.Run(testName, func(t *testing.T) { |
| 268 | actualMine, actualAll := testData.desc.TokensFor("instance-1") |
| 269 | assert.Equal(t, testData.expectedMine, actualMine) |
| 270 | assert.Equal(t, testData.expectedAll, actualAll) |
| 271 | }) |
| 272 | } |
| 273 | } |
| 274 | |
| 275 | func TestDesc_RingsCompare(t *testing.T) { |
| 276 | tests := map[string]struct { |