(t *testing.T)
| 1689 | } |
| 1690 | |
| 1691 | func TestRing_ShuffleShard(t *testing.T) { |
| 1692 | gen := initTokenGenerator(t) |
| 1693 | |
| 1694 | tests := map[string]struct { |
| 1695 | ringInstances map[string]InstanceDesc |
| 1696 | shardSize int |
| 1697 | zoneAwarenessEnabled bool |
| 1698 | expectedSize int |
| 1699 | expectedDistribution []int |
| 1700 | expectedZoneCount int |
| 1701 | expectedInstancesInZoneCount map[string]int |
| 1702 | }{ |
| 1703 | "empty ring": { |
| 1704 | ringInstances: nil, |
| 1705 | shardSize: 2, |
| 1706 | zoneAwarenessEnabled: true, |
| 1707 | expectedSize: 0, |
| 1708 | expectedDistribution: []int{}, |
| 1709 | }, |
| 1710 | "empty ring, shardSize=0": { |
| 1711 | ringInstances: nil, |
| 1712 | shardSize: 0, |
| 1713 | zoneAwarenessEnabled: true, |
| 1714 | expectedSize: 0, |
| 1715 | expectedDistribution: []int{}, |
| 1716 | }, |
| 1717 | "single zone, shard size > num instances": { |
| 1718 | ringInstances: map[string]InstanceDesc{ |
| 1719 | "instance-1": {Addr: "127.0.0.1", Zone: "zone-a", Tokens: gen.GenerateTokens(128, nil)}, |
| 1720 | "instance-2": {Addr: "127.0.0.2", Zone: "zone-a", Tokens: gen.GenerateTokens(128, nil)}, |
| 1721 | }, |
| 1722 | shardSize: 3, |
| 1723 | zoneAwarenessEnabled: true, |
| 1724 | expectedSize: 2, |
| 1725 | expectedDistribution: []int{2}, |
| 1726 | expectedZoneCount: 1, |
| 1727 | expectedInstancesInZoneCount: map[string]int{"zone-a": 2}, |
| 1728 | }, |
| 1729 | "single zone, shard size == 0": { |
| 1730 | ringInstances: map[string]InstanceDesc{ |
| 1731 | "instance-1": {Addr: "127.0.0.1", Zone: "zone-a", Tokens: gen.GenerateTokens(128, nil)}, |
| 1732 | "instance-2": {Addr: "127.0.0.2", Zone: "zone-a", Tokens: gen.GenerateTokens(128, nil)}, |
| 1733 | }, |
| 1734 | shardSize: 3, |
| 1735 | zoneAwarenessEnabled: true, |
| 1736 | expectedSize: 2, |
| 1737 | expectedDistribution: []int{2}, |
| 1738 | expectedZoneCount: 1, |
| 1739 | expectedInstancesInZoneCount: map[string]int{"zone-a": 2}, |
| 1740 | }, |
| 1741 | "single zone, shard size < num instances": { |
| 1742 | ringInstances: map[string]InstanceDesc{ |
| 1743 | "instance-1": {Addr: "127.0.0.1", Zone: "zone-a", Tokens: gen.GenerateTokens(128, nil)}, |
| 1744 | "instance-2": {Addr: "127.0.0.2", Zone: "zone-a", Tokens: gen.GenerateTokens(128, nil)}, |
| 1745 | "instance-3": {Addr: "127.0.0.3", Zone: "zone-a", Tokens: gen.GenerateTokens(128, nil)}, |
| 1746 | }, |
| 1747 | shardSize: 2, |
| 1748 | zoneAwarenessEnabled: true, |
nothing calls this directly
no test coverage detected