mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
raft/rafttest: simulate async send in node test
In order to cover message can well be received when a node is paused, this commit sends message async using goroutine and random sleep. This change makes recvms is possible to cache message during node.pause is triggered.
This commit is contained in:
parent
e56e8471ec
commit
856097181b
@ -17,6 +17,7 @@ package rafttest
|
||||
import (
|
||||
"context"
|
||||
"log"
|
||||
"math/rand"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
@ -79,9 +80,14 @@ func (n *node) start() {
|
||||
}
|
||||
n.storage.Append(rd.Entries)
|
||||
time.Sleep(time.Millisecond)
|
||||
// TODO: make send async, more like real world...
|
||||
|
||||
// simulate async send, more like real world...
|
||||
for _, m := range rd.Messages {
|
||||
n.iface.send(m)
|
||||
mlocal := m
|
||||
go func() {
|
||||
time.Sleep(time.Duration(rand.Int63n(10)) * time.Millisecond)
|
||||
n.iface.send(mlocal)
|
||||
}()
|
||||
}
|
||||
n.Advance()
|
||||
case m := <-n.iface.recv():
|
||||
|
Loading…
x
Reference in New Issue
Block a user