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.
release-3.4
Changkun Ou 2019-07-13 16:16:35 +02:00
parent e56e8471ec
commit 856097181b
1 changed files with 8 additions and 2 deletions

View File

@ -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():