From 5f0489ace0b312aac3ecbce35fe453c630c5def0 Mon Sep 17 00:00:00 2001 From: Dirk McCormick Date: Thu, 7 Apr 2022 12:20:08 +0200 Subject: [PATCH] fix: testkit: give up on waiting for the RPC server to shutdown after 1 second --- itests/kit/rpc.go | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/itests/kit/rpc.go b/itests/kit/rpc.go index 7328bf261ce..c4c160e236b 100644 --- a/itests/kit/rpc.go +++ b/itests/kit/rpc.go @@ -7,6 +7,7 @@ import ( "net/http" "net/http/httptest" "testing" + "time" "github.com/stretchr/testify/require" @@ -25,7 +26,9 @@ func CreateRPCServer(t *testing.T, handler http.Handler, listener net.Listener) } testServ.Start() - t.Cleanup(testServ.Close) + t.Cleanup(func() { + waitUpTo(testServ.Close, time.Second, "Gave up waiting for RPC server to close after 1s") + }) t.Cleanup(testServ.CloseClientConnections) addr := testServ.Listener.Addr() @@ -34,6 +37,23 @@ func CreateRPCServer(t *testing.T, handler http.Handler, listener net.Listener) return testServ, maddr } +func waitUpTo(fn func(), waitTime time.Duration, errMsg string) { + ch := make(chan struct{}) + go func() { + fn() + close(ch) + }() + + timer := time.NewTimer(waitTime) + defer timer.Stop() + select { + case <-ch: + case <-timer.C: + fmt.Println(errMsg) + return + } +} + func fullRpc(t *testing.T, f *TestFullNode) *TestFullNode { handler, err := node.FullNodeHandler(f.FullNode, false) require.NoError(t, err)