(t *testing.T)
| 28 | ) |
| 29 | |
| 30 | func TestClusterNode(t *testing.T) { |
| 31 | ctx := context.Background() |
| 32 | nodeAddr0 := "127.0.0.1:7770" |
| 33 | nodeAddr1 := "127.0.0.1:7771" |
| 34 | node0 := NewClusterNode(nodeAddr0, "") |
| 35 | node1 := NewClusterNode(nodeAddr1, "") |
| 36 | redisCli := node0.GetClient() |
| 37 | |
| 38 | defer func() { |
| 39 | require.NoError(t, redisCli.FlushAll(ctx).Err()) |
| 40 | require.NoError(t, redisCli.Do(ctx, "COMPACT").Err()) |
| 41 | require.NoError(t, redisCli.Do(ctx, "CLUSTER", "RESET").Err()) |
| 42 | }() |
| 43 | |
| 44 | t.Run("Check the cluster mode", func(t *testing.T) { |
| 45 | _, err := node0.CheckClusterMode(ctx) |
| 46 | require.NoError(t, err) |
| 47 | |
| 48 | require.NoError(t, redisCli.Do(ctx, "CLUSTER", "RESET").Err()) |
| 49 | // set the cluster topology |
| 50 | cluster := &Cluster{Shards: Shards{ |
| 51 | {Nodes: []Node{node0}, SlotRanges: []SlotRange{ |
| 52 | {Start: 0, Stop: 100}, |
| 53 | {Start: 102, Stop: 300}, |
| 54 | {Start: 302, Stop: 16383}, |
| 55 | }}, |
| 56 | {Nodes: []Node{node1}, SlotRanges: []SlotRange{}}, |
| 57 | }} |
| 58 | |
| 59 | cluster.Version.Store(1) |
| 60 | require.NoError(t, node0.SyncClusterInfo(ctx, cluster)) |
| 61 | clusterInfo, err := node0.GetClusterInfo(ctx) |
| 62 | require.NoError(t, err) |
| 63 | require.EqualValues(t, 1, clusterInfo.CurrentEpoch) |
| 64 | }) |
| 65 | |
| 66 | t.Run("Check the cluster node0 info", func(t *testing.T) { |
| 67 | require.NoError(t, redisCli.Set(ctx, "foo", "bar", 0).Err()) |
| 68 | info, err := node0.GetClusterNodeInfo(ctx) |
| 69 | require.NoError(t, err) |
| 70 | require.True(t, info.Sequence > 0) |
| 71 | }) |
| 72 | |
| 73 | t.Run("Parse the cluster node info", func(t *testing.T) { |
| 74 | clusterNodesStr, err := node0.GetClusterNodesString(ctx) |
| 75 | require.NoError(t, err) |
| 76 | clusterNodes, err := ParseCluster(clusterNodesStr) |
| 77 | require.NoError(t, err) |
| 78 | require.EqualValues(t, 1, clusterNodes.Version.Load()) |
| 79 | require.Len(t, clusterNodes.Shards, 2) |
| 80 | require.Len(t, clusterNodes.Shards[0].Nodes, 1) |
| 81 | require.EqualValues(t, []SlotRange{ |
| 82 | {Start: 0, Stop: 100}, |
| 83 | {Start: 102, Stop: 300}, |
| 84 | {Start: 302, Stop: 16383}, |
| 85 | }, clusterNodes.Shards[0].SlotRanges) |
| 86 | require.EqualValues(t, nodeAddr0, clusterNodes.Shards[0].Nodes[0].Addr()) |
| 87 | require.EqualValues(t, node0.ID(), clusterNodes.Shards[0].Nodes[0].ID()) |
nothing calls this directly
no test coverage detected