From 899e93a898d6629878e50c7a75d995c37baa7503 Mon Sep 17 00:00:00 2001 From: Albert <26584478+albertteoh@users.noreply.github.com> Date: Fri, 18 Sep 2020 16:54:34 +1000 Subject: [PATCH] Fix failing ServerInUseHostPort test on MacOS (#2477) * Fix failing ServerInUseHostPort test Signed-off-by: albertteoh * Dynamically allocate port. Remove strict error assertion. Signed-off-by: albertteoh * Remove unstable addresses from test names Signed-off-by: albertteoh * Update cmd/query/app/server_test.go Co-authored-by: Yuri Shkuro Signed-off-by: albertteoh * Add require dependency Signed-off-by: albertteoh Co-authored-by: Yuri Shkuro --- cmd/query/app/server.go | 2 +- cmd/query/app/server_test.go | 59 +++++++++++++++++++++++------------- 2 files changed, 39 insertions(+), 22 deletions(-) diff --git a/cmd/query/app/server.go b/cmd/query/app/server.go index 1fa96f3c2c5..d44cfdaf367 100644 --- a/cmd/query/app/server.go +++ b/cmd/query/app/server.go @@ -74,7 +74,7 @@ func NewServer(logger *zap.Logger, querySvc *querysvc.QueryService, options *Que tracer: tracer, grpcServer: grpcServer, httpServer: createHTTPServer(querySvc, options, tracer, logger), - separatePorts: (grpcPort != httpPort), + separatePorts: grpcPort != httpPort, unavailableChannel: make(chan healthcheck.Status), }, nil } diff --git a/cmd/query/app/server_test.go b/cmd/query/app/server_test.go index ca2473acdc0..cfd5f34669a 100644 --- a/cmd/query/app/server_test.go +++ b/cmd/query/app/server_test.go @@ -24,6 +24,7 @@ import ( opentracing "github.com/opentracing/opentracing-go" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" "go.uber.org/zap" "go.uber.org/zap/zaptest/observer" @@ -73,28 +74,44 @@ func TestServerBadHostPort(t *testing.T) { } func TestServerInUseHostPort(t *testing.T) { - - for _, hostPort := range [2]string{":8080", ":8081"} { - conn, err := net.Listen("tcp", hostPort) - assert.NoError(t, err) - - server, err := NewServer(zap.NewNop(), &querysvc.QueryService{}, - &QueryOptions{HTTPHostPort: "127.0.0.1:8080", GRPCHostPort: "127.0.0.1:8081", BearerTokenPropagation: true}, - opentracing.NoopTracer{}) - assert.NoError(t, err) - - err = server.Start() - assert.NotNil(t, err) - conn.Close() - if server.grpcConn != nil { - server.grpcConn.Close() - } - if server.httpConn != nil { - server.httpConn.Close() - } - + const availableHostPort = "127.0.0.1:0" + conn, err := net.Listen("tcp", availableHostPort) + require.NoError(t, err) + defer func() { require.NoError(t, conn.Close()) }() + + testCases := []struct { + name string + httpHostPort string + grpcHostPort string + }{ + {"HTTP host port clash", conn.Addr().String(), availableHostPort}, + {"GRPC host port clash", availableHostPort, conn.Addr().String()}, + } + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + server, err := NewServer( + zap.NewNop(), + &querysvc.QueryService{}, + &QueryOptions{ + HTTPHostPort: tc.httpHostPort, + GRPCHostPort: tc.grpcHostPort, + BearerTokenPropagation: true, + }, + opentracing.NoopTracer{}, + ) + assert.NoError(t, err) + + err = server.Start() + assert.Error(t, err) + + if server.grpcConn != nil { + server.grpcConn.Close() + } + if server.httpConn != nil { + server.httpConn.Close() + } + }) } - } func TestServer(t *testing.T) {