Browse Source

Merge pull request #10891 from changkun/raft

raft/rafttest: simulate async send in node test
Xiang Li 6 years ago
parent
commit
5a734e79f5
1 changed files with 8 additions and 2 deletions
  1. 8 2
      raft/rafttest/node.go

+ 8 - 2
raft/rafttest/node.go

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