mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
commit
25ee66c6c7
@ -71,6 +71,7 @@ func (n *Node) run(r *raft) {
|
||||
|
||||
var lead int64
|
||||
var prev Ready
|
||||
prev.Vote = none
|
||||
for {
|
||||
if lead != r.lead {
|
||||
log.Printf("raft: leader changed from %#x to %#x", lead, r.lead)
|
||||
|
@ -12,17 +12,7 @@ func TestNode(t *testing.T) {
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
defer cancel()
|
||||
|
||||
n := Start(1, []int64{1}, 0, 0)
|
||||
ch := make(chan Ready)
|
||||
go func() {
|
||||
for {
|
||||
ch <- <-n.Ready()
|
||||
}
|
||||
}()
|
||||
n.Campaign(ctx)
|
||||
n.Propose(ctx, []byte("foo"))
|
||||
|
||||
want := []Ready{
|
||||
wants := []Ready{
|
||||
{
|
||||
State: raftpb.State{Term: 1, Vote: -1, Commit: 1, LastIndex: 1},
|
||||
Entries: []raftpb.Entry{{Term: 1, Index: 1}},
|
||||
@ -35,16 +25,20 @@ func TestNode(t *testing.T) {
|
||||
},
|
||||
}
|
||||
|
||||
for i, w := range want {
|
||||
if g := <-ch; !reflect.DeepEqual(g, w) {
|
||||
t.Errorf("#%d: g = %+v,\n w %+v", i, g, w)
|
||||
}
|
||||
n := Start(1, []int64{1}, 0, 0)
|
||||
n.Campaign(ctx)
|
||||
if g := <-n.Ready(); !reflect.DeepEqual(g, wants[0]) {
|
||||
t.Errorf("#%d: g = %+v,\n w %+v", 1, g, wants[0])
|
||||
}
|
||||
|
||||
n.Propose(ctx, []byte("foo"))
|
||||
if g := <-n.Ready(); !reflect.DeepEqual(g, wants[1]) {
|
||||
t.Errorf("#%d: g = %+v,\n w %+v", 2, g, wants[1])
|
||||
}
|
||||
|
||||
select {
|
||||
case rd := <-ch:
|
||||
case rd := <-n.Ready():
|
||||
t.Errorf("unexpected Ready: %+v", rd)
|
||||
default:
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user