(t *testing.T)
| 370 | } |
| 371 | |
| 372 | func TestDesc_RingsCompare(t *testing.T) { |
| 373 | tests := map[string]struct { |
| 374 | r1, r2 *Desc |
| 375 | expected CompareResult |
| 376 | }{ |
| 377 | "nil rings": { |
| 378 | r1: nil, |
| 379 | r2: nil, |
| 380 | expected: Equal, |
| 381 | }, |
| 382 | "one nil, one empty ring": { |
| 383 | r1: nil, |
| 384 | r2: &Desc{Ingesters: map[string]InstanceDesc{}}, |
| 385 | expected: Equal, |
| 386 | }, |
| 387 | "two empty rings": { |
| 388 | r1: &Desc{Ingesters: map[string]InstanceDesc{}}, |
| 389 | r2: &Desc{Ingesters: map[string]InstanceDesc{}}, |
| 390 | expected: Equal, |
| 391 | }, |
| 392 | "same single instance": { |
| 393 | r1: &Desc{Ingesters: map[string]InstanceDesc{"ing1": {Addr: "addr1"}}}, |
| 394 | r2: &Desc{Ingesters: map[string]InstanceDesc{"ing1": {Addr: "addr1"}}}, |
| 395 | expected: Equal, |
| 396 | }, |
| 397 | "same number of instances, from active to readOnly": { |
| 398 | r1: &Desc{Ingesters: map[string]InstanceDesc{"ing1": {Addr: "addr1", State: ACTIVE}}}, |
| 399 | r2: &Desc{Ingesters: map[string]InstanceDesc{"ing1": {Addr: "addr1", State: READONLY}}}, |
| 400 | expected: EqualButReadOnly, |
| 401 | }, |
| 402 | "same number of instances, from readOnly to active": { |
| 403 | r1: &Desc{Ingesters: map[string]InstanceDesc{"ing1": {Addr: "addr1", State: READONLY}}}, |
| 404 | r2: &Desc{Ingesters: map[string]InstanceDesc{"ing1": {Addr: "addr1", State: ACTIVE}}}, |
| 405 | expected: EqualButReadOnly, |
| 406 | }, |
| 407 | "same number of instances, prioritize readOnly than timestamp changes": { |
| 408 | r1: &Desc{Ingesters: map[string]InstanceDesc{"ing1": {Addr: "addr1", State: ACTIVE, Timestamp: 123456}}}, |
| 409 | r2: &Desc{Ingesters: map[string]InstanceDesc{"ing1": {Addr: "addr1", State: READONLY, Timestamp: 789012}}}, |
| 410 | expected: EqualButReadOnly, |
| 411 | }, |
| 412 | "same single instance, different timestamp": { |
| 413 | r1: &Desc{Ingesters: map[string]InstanceDesc{"ing1": {Addr: "addr1", Timestamp: 123456}}}, |
| 414 | r2: &Desc{Ingesters: map[string]InstanceDesc{"ing1": {Addr: "addr1", Timestamp: 789012}}}, |
| 415 | expected: EqualButStatesAndTimestamps, |
| 416 | }, |
| 417 | "same single instance, different state": { |
| 418 | r1: &Desc{Ingesters: map[string]InstanceDesc{"ing1": {Addr: "addr1", State: ACTIVE}}}, |
| 419 | r2: &Desc{Ingesters: map[string]InstanceDesc{"ing1": {Addr: "addr1", State: JOINING}}}, |
| 420 | expected: EqualButStatesAndTimestamps, |
| 421 | }, |
| 422 | "same single instance, different registered timestamp": { |
| 423 | r1: &Desc{Ingesters: map[string]InstanceDesc{"ing1": {Addr: "addr1", State: ACTIVE, RegisteredTimestamp: 1}}}, |
| 424 | r2: &Desc{Ingesters: map[string]InstanceDesc{"ing1": {Addr: "addr1", State: ACTIVE, RegisteredTimestamp: 2}}}, |
| 425 | expected: Different, |
| 426 | }, |
| 427 | "instance in different zone": { |
| 428 | r1: &Desc{Ingesters: map[string]InstanceDesc{"ing1": {Addr: "addr1", Zone: "one"}}}, |
| 429 | r2: &Desc{Ingesters: map[string]InstanceDesc{"ing1": {Addr: "addr1", Zone: "two"}}}, |
nothing calls this directly
no test coverage detected