提交 65f95a19 作者: Juan Batiz-Benet

mux test race #270

上级 d26fd581
...@@ -3,6 +3,7 @@ package mux ...@@ -3,6 +3,7 @@ package mux
import ( import (
"bytes" "bytes"
"fmt" "fmt"
"sync"
"testing" "testing"
"time" "time"
...@@ -121,6 +122,7 @@ func TestSimultMuxer(t *testing.T) { ...@@ -121,6 +122,7 @@ func TestSimultMuxer(t *testing.T) {
total := 10000 total := 10000
speed := time.Microsecond * 1 speed := time.Microsecond * 1
counts := [2][2][2]int{} counts := [2][2][2]int{}
var countsLock sync.Mutex
// run producers at every end sending incrementing messages // run producers at every end sending incrementing messages
produceOut := func(pid pb.ProtocolID, size int) { produceOut := func(pid pb.ProtocolID, size int) {
...@@ -130,7 +132,9 @@ func TestSimultMuxer(t *testing.T) { ...@@ -130,7 +132,9 @@ func TestSimultMuxer(t *testing.T) {
s := fmt.Sprintf("proto %v out %v", pid, i) s := fmt.Sprintf("proto %v out %v", pid, i)
m := msg.New(peer1, []byte(s)) m := msg.New(peer1, []byte(s))
mux1.Protocols[pid].GetPipe().Outgoing <- m mux1.Protocols[pid].GetPipe().Outgoing <- m
countsLock.Lock()
counts[pid][0][0]++ counts[pid][0][0]++
countsLock.Unlock()
// log.Debug("sent %v", s) // log.Debug("sent %v", s)
} }
} }
...@@ -147,7 +151,9 @@ func TestSimultMuxer(t *testing.T) { ...@@ -147,7 +151,9 @@ func TestSimultMuxer(t *testing.T) {
m := msg.New(peer1, d) m := msg.New(peer1, d)
mux1.Incoming <- m mux1.Incoming <- m
countsLock.Lock()
counts[pid][1][0]++ counts[pid][1][0]++
countsLock.Unlock()
// log.Debug("sent %v", s) // log.Debug("sent %v", s)
} }
} }
...@@ -163,7 +169,9 @@ func TestSimultMuxer(t *testing.T) { ...@@ -163,7 +169,9 @@ func TestSimultMuxer(t *testing.T) {
// log.Debug("got %v", string(data)) // log.Debug("got %v", string(data))
_ = data _ = data
countsLock.Lock()
counts[pid][1][1]++ counts[pid][1][1]++
countsLock.Unlock()
case <-ctx.Done(): case <-ctx.Done():
return return
...@@ -175,7 +183,9 @@ func TestSimultMuxer(t *testing.T) { ...@@ -175,7 +183,9 @@ func TestSimultMuxer(t *testing.T) {
for { for {
select { select {
case m := <-mux1.Protocols[pid].GetPipe().Incoming: case m := <-mux1.Protocols[pid].GetPipe().Incoming:
countsLock.Lock()
counts[pid][0][1]++ counts[pid][0][1]++
countsLock.Unlock()
// log.Debug("got %v", string(m.Data())) // log.Debug("got %v", string(m.Data()))
_ = m _ = m
case <-ctx.Done(): case <-ctx.Done():
...@@ -195,10 +205,12 @@ func TestSimultMuxer(t *testing.T) { ...@@ -195,10 +205,12 @@ func TestSimultMuxer(t *testing.T) {
limiter := time.Tick(speed) limiter := time.Tick(speed)
for { for {
<-limiter <-limiter
countsLock.Lock()
got := counts[0][0][0] + counts[0][0][1] + got := counts[0][0][0] + counts[0][0][1] +
counts[0][1][0] + counts[0][1][1] + counts[0][1][0] + counts[0][1][1] +
counts[1][0][0] + counts[1][0][1] + counts[1][0][0] + counts[1][0][1] +
counts[1][1][0] + counts[1][1][1] counts[1][1][0] + counts[1][1][1]
countsLock.Unlock()
if got == total*8 { if got == total*8 {
cancel() cancel()
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论