mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
raft: node.Add needs the pubAddr field
This commit is contained in:
parent
5778c49689
commit
e9cb510ef5
@ -92,10 +92,10 @@ func buildCluster(size int) (nt *network, nodes []*Node) {
|
|||||||
}
|
}
|
||||||
nt = newNetwork(nis...)
|
nt = newNetwork(nis...)
|
||||||
|
|
||||||
lead := Dictate(nodes[0])
|
lead := dictate(nodes[0])
|
||||||
lead.Next()
|
lead.Next()
|
||||||
for i := 1; i < size; i++ {
|
for i := 1; i < size; i++ {
|
||||||
lead.Add(i)
|
lead.Add(i, "")
|
||||||
nt.send(lead.Msgs()...)
|
nt.send(lead.Msgs()...)
|
||||||
for j := 0; j < i; j++ {
|
for j := 0; j < i; j++ {
|
||||||
nodes[j].Next()
|
nodes[j].Next()
|
||||||
|
12
raft/node.go
12
raft/node.go
@ -13,8 +13,8 @@ type Interface interface {
|
|||||||
type tick int
|
type tick int
|
||||||
|
|
||||||
type config struct {
|
type config struct {
|
||||||
NodeId int
|
NodeId int
|
||||||
Address string
|
Addr string
|
||||||
}
|
}
|
||||||
|
|
||||||
type Node struct {
|
type Node struct {
|
||||||
@ -39,12 +39,6 @@ func New(id int, heartbeat, election tick) *Node {
|
|||||||
return n
|
return n
|
||||||
}
|
}
|
||||||
|
|
||||||
func Dictate(n *Node) *Node {
|
|
||||||
n.Step(Message{Type: msgHup})
|
|
||||||
n.Add(n.Id())
|
|
||||||
return n
|
|
||||||
}
|
|
||||||
|
|
||||||
func (n *Node) Id() int { return n.sm.id }
|
func (n *Node) Id() int { return n.sm.id }
|
||||||
|
|
||||||
func (n *Node) HasLeader() bool { return n.sm.lead != none }
|
func (n *Node) HasLeader() bool { return n.sm.lead != none }
|
||||||
@ -56,7 +50,7 @@ func (n *Node) propose(t int, data []byte) {
|
|||||||
n.Step(Message{Type: msgProp, Entries: []Entry{{Type: t, Data: data}}})
|
n.Step(Message{Type: msgProp, Entries: []Entry{{Type: t, Data: data}}})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (n *Node) Add(id int) { n.updateConf(AddNode, &config{NodeId: id}) }
|
func (n *Node) Add(id int, addr string) { n.updateConf(AddNode, &config{NodeId: id, Addr: addr}) }
|
||||||
|
|
||||||
func (n *Node) Remove(id int) { n.updateConf(RemoveNode, &config{NodeId: id}) }
|
func (n *Node) Remove(id int) { n.updateConf(RemoveNode, &config{NodeId: id}) }
|
||||||
|
|
||||||
|
@ -89,7 +89,7 @@ func TestResetElapse(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestStartCluster(t *testing.T) {
|
func TestStartCluster(t *testing.T) {
|
||||||
n := Dictate(New(0, defaultHeartbeat, defaultElection))
|
n := dictate(New(0, defaultHeartbeat, defaultElection))
|
||||||
n.Next()
|
n.Next()
|
||||||
|
|
||||||
if len(n.sm.ins) != 1 {
|
if len(n.sm.ins) != 1 {
|
||||||
@ -104,9 +104,9 @@ func TestStartCluster(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestAdd(t *testing.T) {
|
func TestAdd(t *testing.T) {
|
||||||
n := Dictate(New(0, defaultHeartbeat, defaultElection))
|
n := dictate(New(0, defaultHeartbeat, defaultElection))
|
||||||
n.Next()
|
n.Next()
|
||||||
n.Add(1)
|
n.Add(1, "")
|
||||||
n.Next()
|
n.Next()
|
||||||
|
|
||||||
if len(n.sm.ins) != 2 {
|
if len(n.sm.ins) != 2 {
|
||||||
@ -118,9 +118,9 @@ func TestAdd(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestRemove(t *testing.T) {
|
func TestRemove(t *testing.T) {
|
||||||
n := Dictate(New(0, defaultHeartbeat, defaultElection))
|
n := dictate(New(0, defaultHeartbeat, defaultElection))
|
||||||
n.Next()
|
n.Next()
|
||||||
n.Add(1)
|
n.Add(1, "")
|
||||||
n.Next()
|
n.Next()
|
||||||
n.Remove(0)
|
n.Remove(0)
|
||||||
n.Step(Message{Type: msgAppResp, From: 1, Term: 1, Index: 3})
|
n.Step(Message{Type: msgAppResp, From: 1, Term: 1, Index: 3})
|
||||||
@ -133,3 +133,9 @@ func TestRemove(t *testing.T) {
|
|||||||
t.Errorf("id = %d, want 0", n.sm.id)
|
t.Errorf("id = %d, want 0", n.sm.id)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func dictate(n *Node) *Node {
|
||||||
|
n.Step(Message{Type: msgHup})
|
||||||
|
n.Add(n.Id(), "")
|
||||||
|
return n
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user