aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorShulhan <ms@kilabit.info>2021-08-22 17:18:22 +0700
committerShulhan <ms@kilabit.info>2021-08-22 17:18:22 +0700
commit884220a03acc6da626dd97f6f9682e5041e315e6 (patch)
treee9b4144e1f53da77389bd8eb6da17b0b1636c6a5 /lib
parent5bca3ea57f88359c10cfc086dab472573f63341d (diff)
downloadpakakeh.go-884220a03acc6da626dd97f6f9682e5041e315e6.tar.xz
lib/websocket: try to fix flaky test on client
The following error thrown when running on Github Action using Ubuntu-latest and Go 1.16.3, client_test.go:472: write tcp 127.0.0.1:34460->127.0.0.1:9001: write: connection reset by peer This may be caused by using the same client connection on all test cases. We try to fix this by creating new client on each test cases.
Diffstat (limited to 'lib')
-rw-r--r--lib/websocket/client_test.go67
1 files changed, 28 insertions, 39 deletions
diff --git a/lib/websocket/client_test.go b/lib/websocket/client_test.go
index 540fc31b..00700f8d 100644
--- a/lib/websocket/client_test.go
+++ b/lib/websocket/client_test.go
@@ -348,23 +348,14 @@ func TestClientFragmentation(t *testing.T) {
}
var (
- testClient = &Client{
- Endpoint: _testEndpointAuth,
- }
wg sync.WaitGroup
)
- err := testClient.Connect()
- if err != nil {
- t.Fatal("TestClientFragmentation: " + err.Error())
- }
-
cases := []struct {
- desc string
- reconnect bool
- frames []Frame
- exp *Frame
- expClose *Frame
+ desc string
+ frames []Frame
+ exp *Frame
+ expClose *Frame
}{{
desc: "Two text frames, unmasked",
frames: []Frame{{
@@ -385,8 +376,7 @@ func TestClientFragmentation(t *testing.T) {
isComplete: true,
},
}, {
- desc: "Three text frames, unmasked",
- reconnect: true,
+ desc: "Three text frames, unmasked",
frames: []Frame{{
fin: 0,
opcode: OpcodeText,
@@ -409,8 +399,7 @@ func TestClientFragmentation(t *testing.T) {
isComplete: true,
},
}, {
- desc: "Three text frames, masked",
- reconnect: true,
+ desc: "Three text frames, masked",
frames: []Frame{{
fin: 0,
opcode: OpcodeText,
@@ -437,31 +426,32 @@ func TestClientFragmentation(t *testing.T) {
}}
for _, c := range cases {
- c := c
- t.Log(c.desc)
-
- if c.reconnect {
- err := testClient.Connect()
- if err != nil {
- t.Fatal(err)
- }
+ testClient := &Client{
+ Endpoint: _testEndpointAuth,
}
- testClient.handleClose = func(cl *Client, got *Frame) error {
- exp := c.expClose
- test.Assert(t, "close", exp, got)
- cl.sendClose(got.closeCode, got.payload)
- cl.Quit()
- wg.Done()
- return nil
+ err := testClient.Connect()
+ if err != nil {
+ t.Fatal(err)
}
- testClient.HandleText = func(cl *Client, got *Frame) error {
- exp := c.exp
- test.Assert(t, "text", exp, got)
- wg.Done()
- return nil
- }
+ testClient.handleClose = func(desc string, exp *Frame) ClientHandler {
+ return func(cl *Client, got *Frame) (err error) {
+ test.Assert(t, desc+": close", exp, got)
+ cl.sendClose(got.closeCode, got.payload)
+ cl.Quit()
+ wg.Done()
+ return nil
+ }
+ }(c.desc, c.expClose)
+
+ testClient.HandleText = func(desc string, exp *Frame) ClientHandler {
+ return func(cl *Client, got *Frame) error {
+ test.Assert(t, desc+": text", exp, got)
+ wg.Done()
+ return nil
+ }
+ }(c.desc, c.exp)
wg.Add(1)
for x := 0; x < len(c.frames); x++ {
@@ -472,7 +462,6 @@ func TestClientFragmentation(t *testing.T) {
t.Fatal(err)
}
}
-
wg.Wait()
}
}