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

Function TestCluster_PromoteNewMaster

store/cluster_test.go:64–108  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

62}
63
64func TestCluster_PromoteNewMaster(t *testing.T) {
65 shard := NewShard()
66 shard.SlotRanges = []SlotRange{{Start: 0, Stop: 1023}}
67
68 node0 := NewClusterMockNode()
69 node0.SetRole(RoleMaster)
70
71 node1 := NewClusterMockNode()
72 node1.SetRole(RoleSlave)
73 node1.Sequence = 200
74
75 node2 := NewClusterMockNode()
76 node2.SetRole(RoleSlave)
77 node2.Sequence = 100
78
79 node3 := NewClusterMockNode()
80 node3.SetRole(RoleSlave)
81 node3.Sequence = 300
82
83 shard.Nodes = []Node{node0}
84 cluster := &Cluster{
85 Shards: Shards{shard},
86 }
87
88 ctx := context.Background()
89 _, err := cluster.PromoteNewMaster(ctx, -1, node0.ID(), "")
90 require.ErrorIs(t, err, consts.ErrIndexOutOfRange)
91 _, err = cluster.PromoteNewMaster(ctx, 1, node0.ID(), "")
92 require.ErrorIs(t, err, consts.ErrIndexOutOfRange)
93 _, err = cluster.PromoteNewMaster(ctx, 0, node0.ID(), "")
94 require.ErrorIs(t, err, consts.ErrShardNoReplica)
95
96 shard.Nodes = append(shard.Nodes, node1, node2, node3)
97 _, err = cluster.PromoteNewMaster(ctx, 0, node1.ID(), "")
98 require.ErrorIs(t, err, consts.ErrNodeIsNotMaster)
99
100 newMasterID, err := cluster.PromoteNewMaster(ctx, 0, node0.ID(), "")
101 require.NoError(t, err)
102 require.Equal(t, node3.ID(), newMasterID)
103
104 // test preferredNodeID
105 newMasterID, err = cluster.PromoteNewMaster(ctx, 0, node3.ID(), node2.ID())
106 require.NoError(t, err)
107 require.Equal(t, node2.ID(), newMasterID)
108}

Callers

nothing calls this directly

Calls 6

PromoteNewMasterMethod · 0.95
NewShardFunction · 0.85
NewClusterMockNodeFunction · 0.85
EqualMethod · 0.80
SetRoleMethod · 0.65
IDMethod · 0.65

Tested by

no test coverage detected