Skip to content

Commit a2ed7b1

Browse files
committed
Translate the remaining useful Autobahn python tests
1 parent cd2024f commit a2ed7b1

File tree

5 files changed

+760
-23
lines changed

5 files changed

+760
-23
lines changed

export_test.go

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ type (
1515
const (
1616
OpClose = OpCode(opClose)
1717
OpBinary = OpCode(opBinary)
18+
OpText = OpCode(opText)
1819
OpPing = OpCode(opPing)
1920
OpPong = OpCode(opPong)
2021
OpContinuation = OpCode(opContinuation)
@@ -40,17 +41,38 @@ func (c *Conn) WriteFrame(ctx context.Context, fin bool, opc OpCode, p []byte) (
4041
return c.writeFrame(ctx, fin, opcode(opc), p)
4142
}
4243

43-
func (c *Conn) WriteHeader(ctx context.Context, fin bool, opc OpCode, lenp int64) error {
44+
// header represents a WebSocket frame header.
45+
// See https://tools.ietf.org/html/rfc6455#section-5.2
46+
type Header struct {
47+
Fin bool
48+
Rsv1 bool
49+
Rsv2 bool
50+
Rsv3 bool
51+
OpCode OpCode
52+
53+
PayloadLength int64
54+
}
55+
56+
func (c *Conn) WriteHeader(ctx context.Context, h Header) error {
4457
headerBytes := writeHeader(c.writeHeaderBuf, header{
45-
fin: fin,
46-
opcode: opcode(opc),
47-
payloadLength: lenp,
58+
fin: h.Fin,
59+
rsv1: h.Rsv1,
60+
rsv2: h.Rsv2,
61+
rsv3: h.Rsv3,
62+
opcode: opcode(h.OpCode),
63+
payloadLength: h.PayloadLength,
4864
masked: c.client,
4965
})
5066
_, err := c.bw.Write(headerBytes)
5167
if err != nil {
5268
return xerrors.Errorf("failed to write header: %w", err)
5369
}
70+
if h.Fin {
71+
err = c.Flush()
72+
if err != nil {
73+
return err
74+
}
75+
}
5476
return nil
5577
}
5678

@@ -96,3 +118,7 @@ func (c *Conn) WriteClose(ctx context.Context, code StatusCode, reason string) (
96118
}
97119
return b, nil
98120
}
121+
122+
func ParseClosePayload(p []byte) (CloseError, error) {
123+
return parseClosePayload(p)
124+
}

go.mod

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ module nhooyr.io/websocket
33
go 1.12
44

55
require (
6-
github.com/fatih/color v1.7.0 // indirect
76
github.com/golang/protobuf v1.3.2
87
github.com/google/go-cmp v0.3.1
98
github.com/konsorten/go-windows-terminal-sequences v1.0.2 // indirect
@@ -12,9 +11,9 @@ require (
1211
github.com/mattn/go-isatty v0.0.9 // indirect
1312
github.com/pkg/errors v0.8.1 // indirect
1413
github.com/sirupsen/logrus v1.4.2 // indirect
15-
github.com/spf13/pflag v1.0.3 // indirect
1614
github.com/stretchr/testify v1.4.0 // indirect
1715
go.coder.com/go-tools v0.0.0-20190317003359-0c6a35b74a16
16+
go.coder.com/gott v0.0.0-20190821201847-a3495326ff2c // indirect
1817
go.uber.org/atomic v1.4.0 // indirect
1918
go.uber.org/multierr v1.1.0
2019
golang.org/x/lint v0.0.0-20190409202823-959b441ac422

go.sum

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI=
1919
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
2020
github.com/jonboulle/clockwork v0.1.0 h1:VKV+ZcuP6l3yW9doeqz6ziZGgcynBVQO+obU0+0hcPo=
2121
github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo=
22+
github.com/juju/ansiterm v0.0.0-20180109212912-720a0952cc2a h1:FaWFmfWdAUKbSCtOU2QjDaorUexogfaMgbipgYATUMU=
23+
github.com/juju/ansiterm v0.0.0-20180109212912-720a0952cc2a/go.mod h1:UJSiEoRfvx3hP73CvoARgeLjaIOjybY9vj8PUPPFGeU=
2224
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
2325
github.com/konsorten/go-windows-terminal-sequences v1.0.2 h1:DB17ag19krx9CFsz4o3enTrPXyIXCl+2iCXH/aMAp9s=
2426
github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
@@ -27,12 +29,15 @@ github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORN
2729
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
2830
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
2931
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
32+
github.com/lunixbochs/vtclean v1.0.0 h1:xu2sLAri4lGiovBDQKxl5mrXyESr3gUr5m5SM5+LVb8=
33+
github.com/lunixbochs/vtclean v1.0.0/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm/+2c2E2WMI=
3034
github.com/mattn/go-colorable v0.0.9 h1:UVL0vNpWh04HeJXV0KLcaT7r06gOH2l4OW6ddYRUIY4=
3135
github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
3236
github.com/mattn/go-colorable v0.1.2 h1:/bC9yWikZXAL9uJdulbSfyVNIR3n3trXl+v8+1sx8mU=
3337
github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
3438
github.com/mattn/go-isatty v0.0.3 h1:ns/ykhmWi7G9O+8a448SecJU3nSMBXJfqQkl0upE1jI=
3539
github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
40+
github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
3641
github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
3742
github.com/mattn/go-isatty v0.0.9 h1:d5US/mDsogSGW37IV293h//ZFaeajb69h+EHFsv2xGg=
3843
github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ=
@@ -62,8 +67,14 @@ github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0
6267
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
6368
github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk=
6469
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
70+
go.coder.com/cli v0.4.0 h1:PruDGwm/CPFndyK/eMowZG3vzg5CgohRWeXWCTr3zi8=
71+
go.coder.com/cli v0.4.0/go.mod h1:hRTOURCR3LJF1FRW9arecgrzX+AHG7mfYMwThPIgq+w=
72+
go.coder.com/flog v0.0.0-20190605202805-21116b2c5bd8 h1:4uu3IGoY2Jsd9fvQ0CkPRrbgyjU8Rn4YUmQSf/MENl4=
73+
go.coder.com/flog v0.0.0-20190605202805-21116b2c5bd8/go.mod h1:83JsYgXYv0EOaXjIMnaZ1Fl6ddNB3fJnDZ/8845mUJ8=
6574
go.coder.com/go-tools v0.0.0-20190317003359-0c6a35b74a16 h1:3gGa1bM0nG7Ruhu5b7wKnoOOwAD/fJ8iyyAcpOzDG3A=
6675
go.coder.com/go-tools v0.0.0-20190317003359-0c6a35b74a16/go.mod h1:iKV5yK9t+J5nG9O3uF6KYdPEz3dyfMyB15MN1rbQ8Qw=
76+
go.coder.com/gott v0.0.0-20190821201847-a3495326ff2c h1:/9B69fJsZWF12lkW+IiUUvjghqgr9tfr6J+dKXqpnmE=
77+
go.coder.com/gott v0.0.0-20190821201847-a3495326ff2c/go.mod h1:tCxf+q4AacSjTohQYdTCwDi7sx13OC08I6cMHq6vOCY=
6778
go.uber.org/atomic v1.4.0 h1:cxzIVoETapQEqDhQu3QfnvXAV4AlzcvUCxkVUFw3+EU=
6879
go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
6980
go.uber.org/multierr v1.1.0 h1:HoEmRHQPVSqub6w2z2d2EOVs2fjyFRGyofhKuyDq0QI=
@@ -101,6 +112,7 @@ golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGm
101112
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
102113
golang.org/x/tools v0.0.0-20190830223141-573d9926052a h1:XAHT1kdPpnU8Hk+FPi42KZFhtNFEk4vBg1U4OmIeHTU=
103114
golang.org/x/tools v0.0.0-20190830223141-573d9926052a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
115+
golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
104116
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7 h1:9zdDQZ7Thm29KFXgAX/+yaf3eVbP7djjWp/dXAppNCc=
105117
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
106118
gopkg.in/airbrake/gobrake.v2 v2.0.9 h1:7z2uVWwn7oVeeugY1DtlPAy5H+KYgB1KeKTnqjNatLo=

websocket_bench_test.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@ import (
55
"io"
66
"io/ioutil"
77
"net/http"
8-
"nhooyr.io/websocket"
98
"strconv"
109
"strings"
1110
"testing"
1211
"time"
13-
)
1412

13+
"nhooyr.io/websocket"
14+
)
1515

1616
func BenchmarkConn(b *testing.B) {
1717
sizes := []int{
@@ -116,7 +116,6 @@ func benchConn(b *testing.B, echo, stream bool, size int) {
116116
c.Close(websocket.StatusNormalClosure, "")
117117
}
118118

119-
120119
func discardLoop(ctx context.Context, c *websocket.Conn) {
121120
defer c.Close(websocket.StatusInternalError, "")
122121

0 commit comments

Comments
 (0)