From d9c7392c4d0bf0ec411b0f01f6ac714bdd9f242e Mon Sep 17 00:00:00 2001 From: Derek Collison Date: Tue, 16 Jun 2015 12:48:50 -0700 Subject: [PATCH] race fixes, tests --- docker/Dockerfile | 3 ++- server/log.go | 4 ++-- server/route.go | 3 ++- test/cluster_test.go | 2 ++ test/routes_test.go | 8 ++++++-- test/test.go | 3 +-- 6 files changed, 15 insertions(+), 8 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index de59fe34..ffe7b519 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,7 +1,8 @@ -FROM google/golang:1.3 +FROM google/golang:1.4 MAINTAINER Derek Collison +# Note need CGO_ENABLED=0 go build -a -installsuffix cgo for 1.4 RUN CGO_ENABLED=0 go get -a -ldflags '-s' github.com/apcera/gnatsd COPY Dockerfile.final /gopath/bin/Dockerfile diff --git a/server/log.go b/server/log.go index 00e8c665..8239dd23 100644 --- a/server/log.go +++ b/server/log.go @@ -57,7 +57,7 @@ func Fatalf(format string, v ...interface{}) { } func Debugf(format string, v ...interface{}) { - if debug == 0 { + if atomic.LoadInt32(&debug) == 0 { return } @@ -67,7 +67,7 @@ func Debugf(format string, v ...interface{}) { } func Tracef(format string, v ...interface{}) { - if trace == 0 { + if atomic.LoadInt32(&trace) == 0 { return } diff --git a/server/route.go b/server/route.go index 1cadf400..df64aa3d 100644 --- a/server/route.go +++ b/server/route.go @@ -9,6 +9,7 @@ import ( "net" "net/url" "regexp" + "sync/atomic" "time" ) @@ -202,7 +203,7 @@ func (s *Server) addRoute(c *client) bool { func (s *Server) broadcastToRoutes(proto string) { var arg []byte - if trace == 1 { + if atomic.LoadInt32(&trace) == 1 { arg = []byte(proto[:len(proto)-LEN_CR_LF]) } s.mu.Lock() diff --git a/test/cluster_test.go b/test/cluster_test.go index 43e8f4af..a00eaa28 100644 --- a/test/cluster_test.go +++ b/test/cluster_test.go @@ -205,6 +205,8 @@ func TestClusterDoubleMsgs(t *testing.T) { defer srvA.Shutdown() defer srvB.Shutdown() + time.Sleep(50 * time.Millisecond) + clientA1 := createClientConn(t, optsA.Host, optsA.Port) defer clientA1.Close() diff --git a/test/routes_test.go b/test/routes_test.go index 80a864b9..fcc771e9 100644 --- a/test/routes_test.go +++ b/test/routes_test.go @@ -157,7 +157,10 @@ func TestRouteForwardsMsgFromClients(t *testing.T) { expectMsgs := expectMsgsCommand(t, routeExpect) // Eat the CONNECT and INFO protos - routeExpect(infoRe) + buf := routeExpect(connectRe) + if !infoRe.Match(buf) { + routeExpect(infoRe) + } // Send SUB via route connection routeSend("SUB foo RSID:2:22\r\n") @@ -356,7 +359,7 @@ func TestSolicitRouteReconnect(t *testing.T) { // We expect to get called back.. route = acceptRouteConn(t, rUrl.Host, 2*server.DEFAULT_ROUTE_CONNECT) - defer route.Close() + route.Close() } func TestMultipleRoutesSameId(t *testing.T) { @@ -436,6 +439,7 @@ func TestRouteResendsLocalSubsOnReconnect(t *testing.T) { routeSend, routeExpect := setupRouteEx(t, route, opts, "ROUTE:4222") // Expect to see the local sub echoed through after we send our INFO. + time.Sleep(50 * time.Millisecond) buf := routeExpect(infoRe) // Generate our own INFO so we can send one to trigger the local subs. diff --git a/test/test.go b/test/test.go index 26626bba..88b34659 100644 --- a/test/test.go +++ b/test/test.go @@ -279,8 +279,7 @@ var ( unsubRe = regexp.MustCompile(`UNSUB\s+([^\s]+)(\s+(\d+))?\r\n`) unsubmaxRe = regexp.MustCompile(`UNSUB\s+([^\s]+)(\s+(\d+))\r\n`) unsubnomaxRe = regexp.MustCompile(`UNSUB\s+([^\s]+)\r\n`) - - connectRe = regexp.MustCompile(`CONNECT\s+([^\r\n]+)\r\n`) + connectRe = regexp.MustCompile(`CONNECT\s+([^\r\n]+)\r\n`) ) const (