mirror of
https://github.com/tendermint/tendermint.git
synced 2026-01-07 13:55:17 +00:00
tests: remove panics from test fixtures (#7522)
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user