@@ -5,14 +5,14 @@ package websocket_test
5
5
import (
6
6
"bytes"
7
7
"context"
8
- "crypto/rand"
9
8
"fmt"
10
9
"io"
11
10
"io/ioutil"
12
11
"net/http"
13
12
"net/http/httptest"
14
13
"os"
15
14
"os/exec"
15
+ "strings"
16
16
"sync"
17
17
"testing"
18
18
"time"
@@ -379,60 +379,52 @@ func BenchmarkConn(b *testing.B) {
379
379
mode websocket.CompressionMode
380
380
}{
381
381
{
382
- name : "compressionDisabled " ,
382
+ name : "disabledCompress " ,
383
383
mode : websocket .CompressionDisabled ,
384
384
},
385
385
{
386
- name : "compression " ,
386
+ name : "compress " ,
387
387
mode : websocket .CompressionContextTakeover ,
388
388
},
389
389
{
390
- name : "noContextCompression " ,
390
+ name : "compressNoContext " ,
391
391
mode : websocket .CompressionNoContextTakeover ,
392
392
},
393
393
}
394
394
for _ , bc := range benchCases {
395
395
b .Run (bc .name , func (b * testing.B ) {
396
396
bb , c1 , c2 := newConnTest (b , & websocket.DialOptions {
397
397
CompressionOptions : & websocket.CompressionOptions {Mode : bc .mode },
398
- }, nil )
398
+ }, & websocket.AcceptOptions {
399
+ CompressionOptions : & websocket.CompressionOptions {Mode : bc .mode },
400
+ })
399
401
defer bb .cleanup ()
400
402
401
403
bb .goEchoLoop (c2 )
402
404
403
- const n = 32768
404
- writeBuf := make ([]byte , n )
405
- readBuf := make ([]byte , n )
406
- writes := make (chan websocket.MessageType )
405
+ msg := []byte (strings .Repeat ("1234" , 128 ))
406
+ readBuf := make ([]byte , len (msg ))
407
+ writes := make (chan struct {})
407
408
defer close (writes )
408
409
werrs := make (chan error )
409
410
410
411
go func () {
411
- for typ := range writes {
412
- werrs <- c1 .Write (bb .ctx , typ , writeBuf )
412
+ for range writes {
413
+ werrs <- c1 .Write (bb .ctx , websocket . MessageText , msg )
413
414
}
414
415
}()
415
- b .SetBytes (n )
416
+ b .SetBytes (int64 ( len ( msg )) )
416
417
b .ReportAllocs ()
417
418
b .ResetTimer ()
418
419
for i := 0 ; i < b .N ; i ++ {
419
- _ , err := rand .Reader .Read (writeBuf )
420
- if err != nil {
421
- b .Fatal (err )
422
- }
423
-
424
- expType := websocket .MessageBinary
425
- if writeBuf [0 ]% 2 == 1 {
426
- expType = websocket .MessageText
427
- }
428
- writes <- expType
420
+ writes <- struct {}{}
429
421
430
422
typ , r , err := c1 .Reader (bb .ctx )
431
423
if err != nil {
432
424
b .Fatal (err )
433
425
}
434
- if expType != typ {
435
- assert .Equal (b , "data type" , expType , typ )
426
+ if websocket . MessageText != typ {
427
+ assert .Equal (b , "data type" , websocket . MessageText , typ )
436
428
}
437
429
438
430
_ , err = io .ReadFull (r , readBuf )
@@ -448,8 +440,8 @@ func BenchmarkConn(b *testing.B) {
448
440
assert .Equal (b , "n2" , 0 , n2 )
449
441
}
450
442
451
- if ! bytes .Equal (writeBuf , readBuf ) {
452
- assert .Equal (b , "msg" , writeBuf , readBuf )
443
+ if ! bytes .Equal (msg , readBuf ) {
444
+ assert .Equal (b , "msg" , msg , readBuf )
453
445
}
454
446
455
447
err = <- werrs
@@ -464,3 +456,8 @@ func BenchmarkConn(b *testing.B) {
464
456
})
465
457
}
466
458
}
459
+
460
+ func TestCompression (t * testing.T ) {
461
+ t .Parallel ()
462
+
463
+ }
0 commit comments