tests: remove panics from test fixtures (#7522)

This commit is contained in:
Sam Kleinman
2022-01-06 17:34:32 -05:00
committed by GitHub
parent a91d3cb894
commit 569629486b
27 changed files with 816 additions and 859 deletions

View File

@@ -20,9 +20,10 @@ import (
var wsCallTimeout = 5 * time.Second
type myHandler struct {
type myTestHandler struct {
closeConnAfterRead bool
mtx sync.RWMutex
t *testing.T
}
var upgrader = websocket.Upgrader{
@@ -30,11 +31,10 @@ var upgrader = websocket.Upgrader{
WriteBufferSize: 1024,
}
func (h *myHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
func (h *myTestHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
conn, err := upgrader.Upgrade(w, r, nil)
if err != nil {
panic(err)
}
require.NoError(h.t, err)
defer conn.Close()
for {
messageType, in, err := conn.ReadMessage()
@@ -44,17 +44,16 @@ func (h *myHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
var req rpctypes.RPCRequest
err = json.Unmarshal(in, &req)
if err != nil {
panic(err)
}
require.NoError(h.t, err)
h.mtx.RLock()
if h.closeConnAfterRead {
if err := conn.Close(); err != nil {
panic(err)
func() {
h.mtx.RLock()
defer h.mtx.RUnlock()
if h.closeConnAfterRead {
require.NoError(h.t, conn.Close())
}
}
h.mtx.RUnlock()
}()
res := json.RawMessage(`{}`)
emptyRespBytes, _ := json.Marshal(rpctypes.RPCResponse{Result: res, ID: req.ID})
@@ -68,7 +67,7 @@ func TestWSClientReconnectsAfterReadFailure(t *testing.T) {
t.Cleanup(leaktest.Check(t))
// start server
h := &myHandler{}
h := &myTestHandler{t: t}
s := httptest.NewServer(h)
defer s.Close()
@@ -100,7 +99,7 @@ func TestWSClientReconnectsAfterWriteFailure(t *testing.T) {
t.Cleanup(leaktest.Check(t))
// start server
h := &myHandler{}
h := &myTestHandler{t: t}
s := httptest.NewServer(h)
defer s.Close()
@@ -130,7 +129,7 @@ func TestWSClientReconnectFailure(t *testing.T) {
t.Cleanup(leaktest.Check(t))
// start server
h := &myHandler{}
h := &myTestHandler{t: t}
s := httptest.NewServer(h)
ctx, cancel := context.WithCancel(context.Background())
@@ -185,7 +184,7 @@ func TestNotBlockingOnStop(t *testing.T) {
t.Cleanup(leaktest.Check(t))
timeout := 3 * time.Second
s := httptest.NewServer(&myHandler{})
s := httptest.NewServer(&myTestHandler{t: t})
defer s.Close()
ctx, cancel := context.WithCancel(context.Background())
defer cancel()

View File

@@ -6,6 +6,7 @@ import (
crand "crypto/rand"
"encoding/json"
"fmt"
stdlog "log"
mrand "math/rand"
"net/http"
"os"
@@ -84,22 +85,24 @@ func TestMain(m *testing.M) {
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
setup(ctx)
if err := setup(ctx); err != nil {
stdlog.Fatal(err.Error())
}
code := m.Run()
os.Exit(code)
}
// launch unix and tcp servers
func setup(ctx context.Context) {
func setup(ctx context.Context) error {
logger := log.MustNewDefaultLogger(log.LogFormatPlain, log.LogLevelInfo, false)
cmd := exec.Command("rm", "-f", unixSocket)
err := cmd.Start()
if err != nil {
panic(err)
return err
}
if err = cmd.Wait(); err != nil {
panic(err)
return err
}
tcpLogger := logger.With("socket", "tcp")
@@ -111,7 +114,7 @@ func setup(ctx context.Context) {
config := server.DefaultConfig()
listener1, err := server.Listen(tcpAddr, config.MaxOpenConnections)
if err != nil {
panic(err)
return err
}
go func() {
if err := server.Serve(ctx, listener1, mux, tcpLogger, config); err != nil {
@@ -127,7 +130,7 @@ func setup(ctx context.Context) {
mux2.HandleFunc(websocketEndpoint, wm.WebsocketHandler)
listener2, err := server.Listen(unixAddr, config.MaxOpenConnections)
if err != nil {
panic(err)
return err
}
go func() {
if err := server.Serve(ctx, listener2, mux2, unixLogger, config); err != nil {
@@ -137,6 +140,7 @@ func setup(ctx context.Context) {
// wait for servers to start
time.Sleep(time.Second * 2)
return nil
}
func echoViaHTTP(ctx context.Context, cl client.Caller, val string) (string, error) {