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

Function TestWriteBufferPoolError

conn_test.go:309–350  ·  view source on GitHub ↗

TestWriteBufferPoolError ensures that buffer is returned to pool after error on write.

(t *testing.T)

Source from the content-addressed store, hash-verified

307// TestWriteBufferPoolError ensures that buffer is returned to pool after error
308// on write.
309func TestWriteBufferPoolError(t *testing.T) {
310
311 // Part 1: Test NextWriter/Write/Close
312
313 var pool simpleBufferPool
314 wc := newConn(fakeNetConn{Writer: errorWriter{}}, true, 1024, 1024, &pool, nil, nil)
315
316 w, err := wc.NextWriter(TextMessage)
317 if err != nil {
318 t.Fatalf("wc.NextWriter() returned %v", err)
319 }
320
321 if wc.writeBuf == nil {
322 t.Fatal("writeBuf is nil after NextWriter")
323 }
324
325 writeBufAddr := &wc.writeBuf[0]
326
327 if _, err := io.WriteString(w, "Hello"); err != nil {
328 t.Fatalf("io.WriteString(w, message) returned %v", err)
329 }
330
331 if err := w.Close(); err == nil {
332 t.Fatalf("w.Close() did not return error")
333 }
334
335 if wpd, ok := pool.v.(writePoolData); !ok || len(wpd.buf) == 0 || &wpd.buf[0] != writeBufAddr {
336 t.Fatal("writeBuf not returned to pool")
337 }
338
339 // Part 2: Test WriteMessage
340
341 wc = newConn(fakeNetConn{Writer: errorWriter{}}, true, 1024, 1024, &pool, nil, nil)
342
343 if err := wc.WriteMessage(TextMessage, []byte("Hello")); err == nil {
344 t.Fatalf("wc.WriteMessage did not return error")
345 }
346
347 if wpd, ok := pool.v.(writePoolData); !ok || len(wpd.buf) == 0 || &wpd.buf[0] != writeBufAddr {
348 t.Fatal("writeBuf not returned to pool")
349 }
350}
351
352func TestCloseFrameBeforeFinalMessageFrame(t *testing.T) {
353 const bufSize = 512

Callers

nothing calls this directly

Calls 5

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

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…