Merge pull request #8450 from filecoin-project/fix/testkit-rpc-shutdown

testkit: give up on waiting for the RPC server to shutdown after 1s
This commit is contained in:
Łukasz Magiera 2022-04-07 08:06:46 -04:00 committed by GitHub
commit b26ac2bd0e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -7,6 +7,7 @@ import (
"net/http" "net/http"
"net/http/httptest" "net/http/httptest"
"testing" "testing"
"time"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
@ -25,7 +26,9 @@ func CreateRPCServer(t *testing.T, handler http.Handler, listener net.Listener)
} }
testServ.Start() 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) t.Cleanup(testServ.CloseClientConnections)
addr := testServ.Listener.Addr() addr := testServ.Listener.Addr()
@ -34,6 +37,21 @@ func CreateRPCServer(t *testing.T, handler http.Handler, listener net.Listener)
return testServ, maddr return testServ, maddr
} }
func waitUpTo(fn func(), waitTime time.Duration, errMsg string) {
ch := make(chan struct{})
go func() {
fn()
close(ch)
}()
select {
case <-ch:
case <-time.After(waitTime):
fmt.Println(errMsg)
return
}
}
func fullRpc(t *testing.T, f *TestFullNode) *TestFullNode { func fullRpc(t *testing.T, f *TestFullNode) *TestFullNode {
handler, err := node.FullNodeHandler(f.FullNode, false) handler, err := node.FullNodeHandler(f.FullNode, false)
require.NoError(t, err) require.NoError(t, err)