@@ -154,11 +154,8 @@ func TestPortForward(t *testing.T) {
154
154
client = coderdtest .New (t , & coderdtest.Options {IncludeProvisionerD : true })
155
155
user = coderdtest .CreateFirstUser (t , client )
156
156
_ , workspace = runAgent (t , client , user .UserID )
157
- l1 , p1 = setupTestListener (t , c .setupRemote (t ))
157
+ p1 = setupTestListener (t , c .setupRemote (t ))
158
158
)
159
- t .Cleanup (func () {
160
- _ = l1 .Close ()
161
- })
162
159
163
160
// Create a flag that forwards from local to listener 1.
164
161
localAddress , localFlag := c .setupLocal (t )
@@ -201,13 +198,9 @@ func TestPortForward(t *testing.T) {
201
198
client = coderdtest .New (t , & coderdtest.Options {IncludeProvisionerD : true })
202
199
user = coderdtest .CreateFirstUser (t , client )
203
200
_ , workspace = runAgent (t , client , user .UserID )
204
- l1 , p1 = setupTestListener (t , c .setupRemote (t ))
205
- l2 , p2 = setupTestListener (t , c .setupRemote (t ))
201
+ p1 = setupTestListener (t , c .setupRemote (t ))
202
+ p2 = setupTestListener (t , c .setupRemote (t ))
206
203
)
207
- t .Cleanup (func () {
208
- _ = l1 .Close ()
209
- _ = l2 .Close ()
210
- })
211
204
212
205
// Create a flags for listener 1 and listener 2.
213
206
localAddress1 , localFlag1 := c .setupLocal (t )
@@ -262,11 +255,8 @@ func TestPortForward(t *testing.T) {
262
255
unixCase = cases [2 ]
263
256
264
257
// Setup remote Unix listener.
265
- l1 , p1 = setupTestListener (t , unixCase .setupRemote (t ))
258
+ p1 = setupTestListener (t , unixCase .setupRemote (t ))
266
259
)
267
- t .Cleanup (func () {
268
- _ = l1 .Close ()
269
- })
270
260
271
261
// Create a flag that forwards from local TCP to Unix listener 1.
272
262
// Notably this is a --unix flag.
@@ -324,10 +314,7 @@ func TestPortForward(t *testing.T) {
324
314
continue
325
315
}
326
316
327
- l , p := setupTestListener (t , c .setupRemote (t ))
328
- t .Cleanup (func () {
329
- _ = l .Close ()
330
- })
317
+ p := setupTestListener (t , c .setupRemote (t ))
331
318
332
319
localAddress , localFlag := c .setupLocal (t )
333
320
dials = append (dials , addr {
@@ -425,7 +412,6 @@ func runAgent(t *testing.T, client *codersdk.Client, userID uuid.UUID) ([]coders
425
412
})
426
413
go func () {
427
414
errC <- cmd .ExecuteContext (agentCtx )
428
- require .NoError (t , err )
429
415
}()
430
416
431
417
coderdtest .AwaitWorkspaceAgents (t , client , workspace .LatestBuild .ID )
@@ -437,18 +423,30 @@ func runAgent(t *testing.T, client *codersdk.Client, userID uuid.UUID) ([]coders
437
423
438
424
// setupTestListener starts accepting connections and echoing a single packet.
439
425
// Returns the listener and the listen port or Unix path.
440
- func setupTestListener (t * testing.T , l net.Listener ) (net.Listener , string ) {
426
+ func setupTestListener (t * testing.T , l net.Listener ) string {
427
+ // Wait for listener to completely exit before releasing.
428
+ done := make (chan struct {})
441
429
t .Cleanup (func () {
442
430
_ = l .Close ()
431
+ <- done
443
432
})
444
433
go func () {
434
+ defer close (done )
435
+ // Guard against testAccept running require after test completion.
436
+ var wg sync.WaitGroup
437
+ defer wg .Wait ()
438
+
445
439
for {
446
440
c , err := l .Accept ()
447
441
if err != nil {
448
442
return
449
443
}
450
444
451
- go testAccept (t , c )
445
+ wg .Add (1 )
446
+ go func () {
447
+ wg .Done ()
448
+ testAccept (t , c )
449
+ }()
452
450
}
453
451
}()
454
452
@@ -459,7 +457,7 @@ func setupTestListener(t *testing.T, l net.Listener) (net.Listener, string) {
459
457
addr = port
460
458
}
461
459
462
- return l , addr
460
+ return addr
463
461
}
464
462
465
463
var dialTestPayload = []byte ("dean-was-here123" )
0 commit comments