@@ -3,6 +3,7 @@ package websocket
33import (
44 "bytes"
55 "math/rand"
6+ "strconv"
67 "testing"
78 "time"
89
@@ -36,10 +37,38 @@ func TestHeader(t *testing.T) {
3637 t .Fatalf ("unexpected error value: %+v" , err )
3738 }
3839 })
40+
41+ t .Run ("lengths" , func (t * testing.T ) {
42+ t .Parallel ()
43+
44+ lengths := []int {
45+ 124 ,
46+ 125 ,
47+ 126 ,
48+ 4096 ,
49+ 16384 ,
50+ 65535 ,
51+ 65536 ,
52+ 65537 ,
53+ 131072 ,
54+ }
55+
56+ for _ , n := range lengths {
57+ n := n
58+ t .Run (strconv .Itoa (n ), func (t * testing.T ) {
59+ t .Parallel ()
60+
61+ testHeader (t , header {
62+ payloadLength : int64 (n ),
63+ })
64+ })
65+ }
66+ })
67+
3968 t .Run ("fuzz" , func (t * testing.T ) {
4069 t .Parallel ()
4170
42- for i := 0 ; i < 1000 ; i ++ {
71+ for i := 0 ; i < 10000 ; i ++ {
4372 h := header {
4473 fin : randBool (),
4574 rsv1 : randBool (),
@@ -55,20 +84,24 @@ func TestHeader(t *testing.T) {
5584 rand .Read (h .maskKey [:])
5685 }
5786
58- b := marshalHeader (h )
59- r := bytes .NewReader (b )
60- h2 , err := readHeader (r )
61- if err != nil {
62- t .Logf ("header: %#v" , h )
63- t .Logf ("bytes: %b" , b )
64- t .Fatalf ("failed to read header: %v" , err )
65- }
66-
67- if ! cmp .Equal (h , h2 , cmp .AllowUnexported (header {})) {
68- t .Logf ("header: %#v" , h )
69- t .Logf ("bytes: %b" , b )
70- t .Fatalf ("parsed and read header differ: %v" , cmp .Diff (h , h2 , cmp .AllowUnexported (header {})))
71- }
87+ testHeader (t , h )
7288 }
7389 })
7490}
91+
92+ func testHeader (t * testing.T , h header ) {
93+ b := marshalHeader (h )
94+ r := bytes .NewReader (b )
95+ h2 , err := readHeader (r )
96+ if err != nil {
97+ t .Logf ("header: %#v" , h )
98+ t .Logf ("bytes: %b" , b )
99+ t .Fatalf ("failed to read header: %v" , err )
100+ }
101+
102+ if ! cmp .Equal (h , h2 , cmp .AllowUnexported (header {})) {
103+ t .Logf ("header: %#v" , h )
104+ t .Logf ("bytes: %b" , b )
105+ t .Fatalf ("parsed and read header differ: %v" , cmp .Diff (h , h2 , cmp .AllowUnexported (header {})))
106+ }
107+ }
0 commit comments