11package wsnet
22
33import (
4- "bytes"
54 "context"
65 "crypto/rand"
76 "errors"
@@ -15,6 +14,8 @@ import (
1514 "cdr.dev/slog/sloggers/slogtest"
1615 "github.com/pion/ice/v2"
1716 "github.com/pion/webrtc/v3"
17+ "github.com/stretchr/testify/assert"
18+ "github.com/stretchr/testify/require"
1819)
1920
2021func ExampleDial_basic () {
@@ -50,37 +51,30 @@ func ExampleDial_basic() {
5051 // You now have access to the proxied remote port in `conn`.
5152}
5253
53- // nolint:gocognit,gocyclo
5454func TestDial (t * testing.T ) {
5555 t .Run ("Ping" , func (t * testing.T ) {
5656 t .Parallel ()
5757
5858 connectAddr , listenAddr := createDumbBroker (t )
59- _ , err := Listen (context .Background (), slogtest .Make (t , nil ), listenAddr , "" )
60- if err != nil {
61- t .Error (err )
62- return
63- }
59+ l , err := Listen (context .Background (), slogtest .Make (t , nil ), listenAddr , "" )
60+ require .NoError (t , err )
61+ defer l .Close ()
62+
6463 dialer , err := DialWebsocket (context .Background (), connectAddr , nil )
65- if err != nil {
66- t .Error (err )
67- return
68- }
64+ require .NoError (t , err )
65+
6966 err = dialer .Ping (context .Background ())
70- if err != nil {
71- t .Error (err )
72- }
67+ require .NoError (t , err )
7368 })
7469
7570 t .Run ("Ping Close" , func (t * testing.T ) {
7671 t .Parallel ()
7772
7873 connectAddr , listenAddr := createDumbBroker (t )
79- _ , err := Listen (context .Background (), slogtest .Make (t , nil ), listenAddr , "" )
80- if err != nil {
81- t .Error (err )
82- return
83- }
74+ l , err := Listen (context .Background (), slogtest .Make (t , nil ), listenAddr , "" )
75+ require .NoError (t , err )
76+ defer l .Close ()
77+
8478 turnAddr , closeTurn := createTURNServer (t , ice .SchemeTypeTURN )
8579 dialer , err := DialWebsocket (context .Background (), connectAddr , & DialOptions {
8680 ICEServers : []webrtc.ICEServer {{
@@ -90,167 +84,124 @@ func TestDial(t *testing.T) {
9084 CredentialType : webrtc .ICECredentialTypePassword ,
9185 }},
9286 })
93- if err != nil {
94- t .Error (err )
95- return
96- }
87+ require .NoError (t , err )
88+
9789 _ = dialer .Ping (context .Background ())
9890 closeTurn ()
9991 err = dialer .Ping (context .Background ())
100- if err != io .EOF {
101- t .Error (err )
102- return
103- }
92+ assert .ErrorIs (t , err , io .EOF )
10493 })
10594
10695 t .Run ("OPError" , func (t * testing.T ) {
10796 t .Parallel ()
10897
10998 connectAddr , listenAddr := createDumbBroker (t )
110- _ , err := Listen (context .Background (), slogtest .Make (t , nil ), listenAddr , "" )
111- if err != nil {
112- t .Error (err )
113- return
114- }
99+ l , err := Listen (context .Background (), slogtest .Make (t , nil ), listenAddr , "" )
100+ require .NoError (t , err )
101+ defer l .Close ()
102+
115103 dialer , err := DialWebsocket (context .Background (), connectAddr , nil )
116- if err != nil {
117- t .Error (err )
118- }
104+ require .NoError (t , err )
105+
119106 _ , err = dialer .DialContext (context .Background (), "tcp" , "localhost:100" )
120- if err == nil {
121- t .Error ("should have gotten err" )
122- return
123- }
124- _ , ok := err .(* net.OpError )
125- if ! ok {
126- t .Error ("invalid error type returned" )
127- return
128- }
107+ assert .Error (t , err )
108+
109+ // Double pointer intended.
110+ netErr := & net.OpError {}
111+ assert .ErrorAs (t , err , & netErr )
129112 })
130113
131114 t .Run ("Proxy" , func (t * testing.T ) {
132115 t .Parallel ()
133116
134117 listener , err := net .Listen ("tcp" , "0.0.0.0:0" )
135- if err != nil {
136- t .Error (err )
137- return
138- }
118+ require .NoError (t , err )
119+
139120 msg := []byte ("Hello!" )
140121 go func () {
141122 conn , err := listener .Accept ()
142- if err != nil {
143- t .Error (err )
144- }
123+ require .NoError (t , err )
124+
145125 _ , _ = conn .Write (msg )
146126 }()
147127
148128 connectAddr , listenAddr := createDumbBroker (t )
149- _ , err = Listen (context .Background (), slogtest .Make (t , nil ), listenAddr , "" )
150- if err != nil {
151- t .Error (err )
152- return
153- }
129+ l , err := Listen (context .Background (), slogtest .Make (t , nil ), listenAddr , "" )
130+ require .NoError (t , err )
131+ defer l .Close ()
132+
154133 dialer , err := DialWebsocket (context .Background (), connectAddr , nil )
155- if err != nil {
156- t .Error (err )
157- return
158- }
134+ require .NoError (t , err )
135+
159136 conn , err := dialer .DialContext (context .Background (), listener .Addr ().Network (), listener .Addr ().String ())
160- if err != nil {
161- t .Error (err )
162- return
163- }
137+ require .NoError (t , err )
138+
164139 rec := make ([]byte , len (msg ))
165140 _ , err = conn .Read (rec )
166- if err != nil {
167- t .Error (err )
168- return
169- }
170- if ! bytes .Equal (msg , rec ) {
171- t .Error ("bytes were different" , string (msg ), string (rec ))
172- }
141+ require .NoError (t , err )
142+
143+ assert .Equal (t , msg , rec )
173144 })
174145
175146 // Expect that we'd get an EOF on the server closing.
176147 t .Run ("EOF on Close" , func (t * testing.T ) {
177148 t .Parallel ()
178149
179150 listener , err := net .Listen ("tcp" , "0.0.0.0:0" )
180- if err != nil {
181- t .Error (err )
182- return
183- }
151+ require .NoError (t , err )
184152 go func () {
185153 _ , _ = listener .Accept ()
186154 }()
155+
187156 connectAddr , listenAddr := createDumbBroker (t )
188- srv , err := Listen (context .Background (), slogtest .Make (t , nil ), listenAddr , "" )
189- if err != nil {
190- t .Error (err )
191- return
192- }
157+ l , err := Listen (context .Background (), slogtest .Make (t , nil ), listenAddr , "" )
158+ require .NoError (t , err )
159+ defer l .Close ()
160+
193161 dialer , err := DialWebsocket (context .Background (), connectAddr , nil )
194- if err != nil {
195- t .Error (err )
196- }
162+ require .NoError (t , err )
163+
197164 conn , err := dialer .DialContext (context .Background (), listener .Addr ().Network (), listener .Addr ().String ())
198- if err != nil {
199- t .Error (err )
200- return
201- }
202- go srv .Close ()
165+ require .NoError (t , err )
166+
167+ go l .Close ()
203168 rec := make ([]byte , 16 )
204169 _ , err = conn .Read (rec )
205- if ! errors .Is (err , io .EOF ) {
206- t .Error (err )
207- return
208- }
170+ assert .ErrorIs (t , err , io .EOF )
209171 })
210172
211173 t .Run ("Disconnect" , func (t * testing.T ) {
212174 t .Parallel ()
213175
214176 connectAddr , listenAddr := createDumbBroker (t )
215- _ , err := Listen (context .Background (), slogtest .Make (t , nil ), listenAddr , "" )
216- if err != nil {
217- t .Error (err )
218- return
219- }
177+ l , err := Listen (context .Background (), slogtest .Make (t , nil ), listenAddr , "" )
178+ require .NoError (t , err )
179+ defer l .Close ()
180+
220181 dialer , err := DialWebsocket (context .Background (), connectAddr , nil )
221- if err != nil {
222- t .Error (err )
223- return
224- }
182+ require .NoError (t , err )
183+
225184 err = dialer .Close ()
226- if err != nil {
227- t .Error (err )
228- return
229- }
185+ require .NoError (t , err )
186+
230187 err = dialer .Ping (context .Background ())
231- if err != webrtc .ErrConnectionClosed {
232- t .Error (err )
233- }
188+ assert .ErrorIs (t , err , webrtc .ErrConnectionClosed )
234189 })
235190
236191 t .Run ("Disconnect DialContext" , func (t * testing.T ) {
237192 t .Parallel ()
238193
239194 tcpListener , err := net .Listen ("tcp" , "0.0.0.0:0" )
240- if err != nil {
241- t .Error (err )
242- return
243- }
195+ require .NoError (t , err )
244196 go func () {
245197 _ , _ = tcpListener .Accept ()
246198 }()
247199
248200 connectAddr , listenAddr := createDumbBroker (t )
249- _ , err = Listen (context .Background (), slogtest .Make (t , nil ), listenAddr , "" )
250- if err != nil {
251- t .Error (err )
252- return
253- }
201+ l , err := Listen (context .Background (), slogtest .Make (t , nil ), listenAddr , "" )
202+ require .NoError (t , err )
203+ defer l .Close ()
204+
254205 turnAddr , closeTurn := createTURNServer (t , ice .SchemeTypeTURN )
255206 dialer , err := DialWebsocket (context .Background (), connectAddr , & DialOptions {
256207 ICEServers : []webrtc.ICEServer {{
@@ -260,42 +211,32 @@ func TestDial(t *testing.T) {
260211 CredentialType : webrtc .ICECredentialTypePassword ,
261212 }},
262213 })
263- if err != nil {
264- t .Error (err )
265- return
266- }
214+ require .NoError (t , err )
215+
267216 conn , err := dialer .DialContext (context .Background (), "tcp" , tcpListener .Addr ().String ())
268- if err != nil {
269- t .Error (err )
270- return
271- }
217+ require .NoError (t , err )
218+
272219 // Close the TURN server before reading...
273220 // WebRTC connections take a few seconds to timeout.
274221 closeTurn ()
275222 _ , err = conn .Read (make ([]byte , 16 ))
276- if err != io .EOF {
277- t .Error (err )
278- return
279- }
223+ assert .ErrorIs (t , err , io .EOF )
280224 })
281225
282226 t .Run ("Closed" , func (t * testing.T ) {
283227 t .Parallel ()
284228
285229 connectAddr , listenAddr := createDumbBroker (t )
286- _ , err := Listen (context .Background (), slogtest .Make (t , nil ), listenAddr , "" )
287- if err != nil {
288- t .Error (err )
289- return
290- }
230+ l , err := Listen (context .Background (), slogtest .Make (t , nil ), listenAddr , "" )
231+ require .NoError (t , err )
232+ defer l .Close ()
233+
291234 dialer , err := DialWebsocket (context .Background (), connectAddr , nil )
292- if err != nil {
293- t .Error (err )
294- return
295- }
235+ require .NoError (t , err )
296236 go func () {
297237 _ = dialer .Close ()
298238 }()
239+
299240 select {
300241 case <- dialer .Closed ():
301242 case <- time .NewTimer (time .Second ).C :
@@ -334,11 +275,12 @@ func BenchmarkThroughput(b *testing.B) {
334275 }
335276 }()
336277 connectAddr , listenAddr := createDumbBroker (b )
337- _ , err = Listen (context .Background (), slogtest .Make (b , nil ), listenAddr , "" )
278+ l , err : = Listen (context .Background (), slogtest .Make (b , nil ), listenAddr , "" )
338279 if err != nil {
339280 b .Error (err )
340281 return
341282 }
283+ defer l .Close ()
342284
343285 dialer , err := DialWebsocket (context .Background (), connectAddr , nil )
344286 if err != nil {
0 commit comments