MCPcopy
hub / github.com/gorilla/websocket / TestFraming

Function TestFraming

conn_test.go:57–150  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

55}
56
57func TestFraming(t *testing.T) {
58 frameSizes := []int{
59 0, 1, 2, 124, 125, 126, 127, 128, 129, 65534, 65535,
60 // 65536, 65537
61 }
62 var readChunkers = []struct {
63 name string
64 f func(io.Reader) io.Reader
65 }{
66 {"half", iotest.HalfReader},
67 {"one", iotest.OneByteReader},
68 {"asis", func(r io.Reader) io.Reader { return r }},
69 }
70 writeBuf := make([]byte, 65537)
71 for i := range writeBuf {
72 writeBuf[i] = byte(i)
73 }
74 var writers = []struct {
75 name string
76 f func(w io.Writer, n int) (int, error)
77 }{
78 {"iocopy", func(w io.Writer, n int) (int, error) {
79 nn, err := io.Copy(w, bytes.NewReader(writeBuf[:n]))
80 return int(nn), err
81 }},
82 {"write", func(w io.Writer, n int) (int, error) {
83 return w.Write(writeBuf[:n])
84 }},
85 {"string", func(w io.Writer, n int) (int, error) {
86 return io.WriteString(w, string(writeBuf[:n]))
87 }},
88 }
89
90 for _, compress := range []bool{false, true} {
91 for _, isServer := range []bool{true, false} {
92 for _, chunker := range readChunkers {
93
94 var connBuf bytes.Buffer
95 wc := newTestConn(nil, &connBuf, isServer)
96 rc := newTestConn(chunker.f(&connBuf), nil, !isServer)
97 if compress {
98 wc.newCompressionWriter = compressNoContextTakeover
99 rc.newDecompressionReader = decompressNoContextTakeover
100 }
101 for _, n := range frameSizes {
102 for _, writer := range writers {
103 name := fmt.Sprintf("z:%v, s:%v, r:%s, n:%d w:%s", compress, isServer, chunker.name, n, writer.name)
104
105 w, err := wc.NextWriter(TextMessage)
106 if err != nil {
107 t.Errorf("%s: wc.NextWriter() returned %v", name, err)
108 continue
109 }
110 nn, err := writer.f(w, n)
111 if err != nil || nn != n {
112 t.Errorf("%s: w.Write(writeBuf[:n]) returned %d, %v", name, nn, err)
113 continue
114 }

Callers

nothing calls this directly

Calls 6

newTestConnFunction · 0.85
WriteStringMethod · 0.80
NextWriterMethod · 0.80
NextReaderMethod · 0.80
WriteMethod · 0.45
CloseMethod · 0.45

Tested by

no test coverage detected