Fix race condition in tests

This commit is contained in:
Andy Wang 2020-12-23 22:34:12 +00:00
parent 0209bcd977
commit a97f5759c0
No known key found for this signature in database
GPG Key ID: 181B49F9F38F3374
2 changed files with 11 additions and 11 deletions

View File

@ -10,6 +10,7 @@ import (
"net" "net"
"sync" "sync"
"testing" "testing"
"time"
) )
func serveEcho(l net.Listener) { func serveEcho(l net.Listener) {
@ -19,13 +20,13 @@ func serveEcho(l net.Listener) {
// TODO: pass the error back // TODO: pass the error back
return return
} }
go func() { go func(conn net.Conn) {
_, err := io.Copy(conn, conn) _, err := io.Copy(conn, conn)
if err != nil { if err != nil {
// TODO: pass the error back // TODO: pass the error back
return return
} }
}() }(conn)
} }
} }
@ -65,18 +66,19 @@ func makeSessionPair(numConn int) (*Session, *Session, []*connPair) {
func runEchoTest(t *testing.T, conns []net.Conn, msgLen int) { func runEchoTest(t *testing.T, conns []net.Conn, msgLen int) {
var wg sync.WaitGroup var wg sync.WaitGroup
for _, conn := range conns {
wg.Add(1)
go func(conn net.Conn) {
testData := make([]byte, msgLen) testData := make([]byte, msgLen)
rand.Read(testData) rand.Read(testData)
for _, conn := range conns {
wg.Add(1)
go func(conn net.Conn) {
n, err := conn.Write(testData) n, err := conn.Write(testData)
if n != msgLen { if n != msgLen {
t.Fatalf("written only %v, err %v", n, err) t.Fatalf("written only %v, err %v", n, err)
} }
recvBuf := make([]byte, msgLen) recvBuf := make([]byte, msgLen)
conn.SetReadDeadline(time.Now().Add(time.Second))
_, err = io.ReadFull(conn, recvBuf) _, err = io.ReadFull(conn, recvBuf)
if err != nil { if err != nil {
t.Fatalf("failed to read back: %v", err) t.Fatalf("failed to read back: %v", err)

View File

@ -30,15 +30,14 @@ func serveTCPEcho(l net.Listener) {
log.Error(err) log.Error(err)
return return
} }
go func() { go func(conn net.Conn) {
conn := conn
_, err := io.Copy(conn, conn) _, err := io.Copy(conn, conn)
if err != nil { if err != nil {
conn.Close() conn.Close()
log.Error(err) log.Error(err)
return return
} }
}() }(conn)
} }
} }
@ -50,8 +49,7 @@ func serveUDPEcho(listener *connutil.PipeListener) {
return return
} }
const bufSize = 32 * 1024 const bufSize = 32 * 1024
go func() { go func(conn net.PacketConn) {
conn := conn
defer conn.Close() defer conn.Close()
buf := make([]byte, bufSize) buf := make([]byte, bufSize)
for { for {
@ -70,7 +68,7 @@ func serveUDPEcho(listener *connutil.PipeListener) {
return return
} }
} }
}() }(conn)
} }
} }