MCPcopy Create free account
hub / github.com/apache/kvrocks-controller / TestClusterNode

Function TestClusterNode

store/cluster_node_test.go:30–94  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

28)
29
30func 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())

Callers

nothing calls this directly

Calls 13

GetClientMethod · 0.95
CheckClusterModeMethod · 0.95
SyncClusterInfoMethod · 0.95
GetClusterInfoMethod · 0.95
GetClusterNodeInfoMethod · 0.95
GetClusterNodesStringMethod · 0.95
IDMethod · 0.95
NewClusterNodeFunction · 0.85
ParseClusterFunction · 0.85
LenMethod · 0.80
SetMethod · 0.65
AddrMethod · 0.65

Tested by

no test coverage detected