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

Function TestWriteBufferPool

conn_test.go:203–278  ·  conn_test.go::TestWriteBufferPool
(t *testing.T)

Source from the content-addressed store, hash-verified

201}
202
203func TestWriteBufferPool(t *testing.T) {
204 const message = "Now is the time for all good people to come to the aid of the party."
205
206 var buf bytes.Buffer
207 var pool simpleBufferPool
208 rc := newTestConn(&buf, nil, false)
209
210 // Specify writeBufferSize smaller than message size to ensure that pooling
211 // works with fragmented messages.
212 wc := newConn(fakeNetConn{Writer: &buf}, true, 1024, len(message)-1, &pool, nil, nil)
213
214 if wc.writeBuf != nil {
215 t.Fatal("writeBuf not nil after create")
216 }
217
218 // Part 1: test NextWriter/Write/Close
219
220 w, err := wc.NextWriter(TextMessage)
221 if err != nil {
222 t.Fatalf("wc.NextWriter() returned %v", err)
223 }
224
225 if wc.writeBuf == nil {
226 t.Fatal("writeBuf is nil after NextWriter")
227 }
228
229 writeBufAddr := &wc.writeBuf[0]
230
231 if _, err := io.WriteString(w, message); err != nil {
232 t.Fatalf("io.WriteString(w, message) returned %v", err)
233 }
234
235 if err := w.Close(); err != nil {
236 t.Fatalf("w.Close() returned %v", err)
237 }
238
239 if wc.writeBuf != nil {
240 t.Fatal("writeBuf not nil after w.Close()")
241 }
242
243 if wpd, ok := pool.v.(writePoolData); !ok || len(wpd.buf) == 0 || &wpd.buf[0] != writeBufAddr {
244 t.Fatal("writeBuf not returned to pool")
245 }
246
247 opCode, p, err := rc.ReadMessage()
248 if opCode != TextMessage || err != nil {
249 t.Fatalf("ReadMessage() returned %d, p, %v", opCode, err)
250 }
251
252 if s := string(p); s != message {
253 t.Fatalf("message is %s, want %s", s, message)
254 }
255
256 // Part 2: Test WriteMessage.
257
258 if err := wc.WriteMessage(TextMessage, []byte(message)); err != nil {
259 t.Fatalf("wc.WriteMessage() returned %v", err)
260 }

Callers

nothing calls this directly

Calls 7

newTestConnFunction · 0.85
newConnFunction · 0.85
NextWriterMethod · 0.80
WriteStringMethod · 0.80
ReadMessageMethod · 0.80
WriteMessageMethod · 0.80
CloseMethod · 0.45

Tested by

no test coverage detected