(t *testing.T)
| 201 | } |
| 202 | |
| 203 | func 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 | } |
nothing calls this directly
no test coverage detected