diff --git a/raft/cluster_test.go b/raft/cluster_test.go index 036509d9f..09c4efbdc 100644 --- a/raft/cluster_test.go +++ b/raft/cluster_test.go @@ -92,7 +92,7 @@ func buildCluster(size int) (nt *network, nodes []*Node) { } nt = newNetwork(nis...) - nodes[0].StartCluster() + Dictate(nodes[0]).Next() for i := 1; i < size; i++ { nt.send(nodes[0].newConfMessage(configAdd, &Config{NodeId: i})) nodes[i].Start() diff --git a/raft/node.go b/raft/node.go index 21a6d65d3..644f58bcd 100644 --- a/raft/node.go +++ b/raft/node.go @@ -50,14 +50,11 @@ func (n *Node) Propose(data []byte) { n.Step(m) } -func (n *Node) StartCluster() { - if n.sm != nil { - panic("node is started") - } +func Dictate(n *Node) *Node { n.sm = newStateMachine(n.addr, []int{n.addr}) n.Step(Message{Type: msgHup}) n.Step(n.newConfMessage(configAdd, &Config{NodeId: n.addr})) - n.Next() + return n } func (n *Node) Start() { diff --git a/raft/node_test.go b/raft/node_test.go index a915b034d..5285ead64 100644 --- a/raft/node_test.go +++ b/raft/node_test.go @@ -89,8 +89,8 @@ func TestResetElapse(t *testing.T) { } func TestStartCluster(t *testing.T) { - n := New(0, defaultHeartbeat, defaultElection) - n.StartCluster() + n := Dictate(New(0, defaultHeartbeat, defaultElection)) + n.Next() if len(n.sm.ins) != 1 { t.Errorf("k = %d, want 1", len(n.sm.ins)) @@ -104,8 +104,8 @@ func TestStartCluster(t *testing.T) { } func TestAdd(t *testing.T) { - n := New(0, defaultHeartbeat, defaultElection) - n.StartCluster() + n := Dictate(New(0, defaultHeartbeat, defaultElection)) + n.Next() n.Add(1) n.Next() @@ -118,8 +118,8 @@ func TestAdd(t *testing.T) { } func TestRemove(t *testing.T) { - n := New(0, defaultHeartbeat, defaultElection) - n.StartCluster() + n := Dictate(New(0, defaultHeartbeat, defaultElection)) + n.Next() n.Add(1) n.Next() n.Remove(0)