1
0
Fork 0

WaitGroups to deal with races

master
Philip O'Toole 1 year ago
parent e24f6cb11c
commit d1d123dc23

@ -4,6 +4,7 @@ import (
"encoding/binary" "encoding/binary"
"io" "io"
"net" "net"
"sync"
"testing" "testing"
"time" "time"
@ -21,7 +22,9 @@ func Test_NewClient(t *testing.T) {
func Test_ClientGetNodeAPIAddr(t *testing.T) { func Test_ClientGetNodeAPIAddr(t *testing.T) {
srv := servicetest.NewService() srv := servicetest.NewService()
handlerSuccess := 0
var wg sync.WaitGroup
wg.Add(1)
srv.Handler = func(conn net.Conn) { srv.Handler = func(conn net.Conn) {
var p []byte var p []byte
var err error var err error
@ -41,7 +44,7 @@ func Test_ClientGetNodeAPIAddr(t *testing.T) {
conn.Close() conn.Close()
} }
writeBytesWithLength(conn, p) writeBytesWithLength(conn, p)
handlerSuccess++ wg.Done()
} }
srv.Start() srv.Start()
defer srv.Close() defer srv.Close()
@ -51,9 +54,7 @@ func Test_ClientGetNodeAPIAddr(t *testing.T) {
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
if handlerSuccess != 1 { wg.Wait()
t.Fatalf("unexpected handler success count, got %d, exp: 1", handlerSuccess)
}
exp, got := "http://localhost:1234", addr exp, got := "http://localhost:1234", addr
if exp != got { if exp != got {
t.Fatalf("unexpected addr, got %s, exp: %s", got, exp) t.Fatalf("unexpected addr, got %s, exp: %s", got, exp)
@ -62,7 +63,9 @@ func Test_ClientGetNodeAPIAddr(t *testing.T) {
func Test_ClientExecute(t *testing.T) { func Test_ClientExecute(t *testing.T) {
srv := servicetest.NewService() srv := servicetest.NewService()
handlerSuccess := 0
var wg sync.WaitGroup
wg.Add(1)
srv.Handler = func(conn net.Conn) { srv.Handler = func(conn net.Conn) {
var p []byte var p []byte
var err error var err error
@ -88,7 +91,7 @@ func Test_ClientExecute(t *testing.T) {
conn.Close() conn.Close()
} }
writeBytesWithLength(conn, p) writeBytesWithLength(conn, p)
handlerSuccess++ wg.Done()
} }
srv.Start() srv.Start()
defer srv.Close() defer srv.Close()
@ -99,14 +102,14 @@ func Test_ClientExecute(t *testing.T) {
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
if handlerSuccess != 1 { wg.Wait()
t.Fatalf("unexpected handler success count, got %d, exp: 1", handlerSuccess)
}
} }
func Test_ClientQuery(t *testing.T) { func Test_ClientQuery(t *testing.T) {
srv := servicetest.NewService() srv := servicetest.NewService()
handlerSuccess := 0
var wg sync.WaitGroup
wg.Add(1)
srv.Handler = func(conn net.Conn) { srv.Handler = func(conn net.Conn) {
var p []byte var p []byte
var err error var err error
@ -132,7 +135,7 @@ func Test_ClientQuery(t *testing.T) {
conn.Close() conn.Close()
} }
writeBytesWithLength(conn, p) writeBytesWithLength(conn, p)
handlerSuccess++ wg.Done()
} }
srv.Start() srv.Start()
defer srv.Close() defer srv.Close()
@ -143,9 +146,7 @@ func Test_ClientQuery(t *testing.T) {
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
if handlerSuccess != 1 { wg.Wait()
t.Fatalf("unexpected handler success count, got %d, exp: 1", handlerSuccess)
}
} }
func Test_ClientRemoveNode(t *testing.T) { func Test_ClientRemoveNode(t *testing.T) {

Loading…
Cancel
Save