@@ -368,50 +368,55 @@ func TestWorkspaceAgentPTY(t *testing.T) {
368
368
369
369
func TestWorkspaceAgentListeningPorts (t * testing.T ) {
370
370
t .Parallel ()
371
- client := coderdtest .New (t ,& coderdtest.Options {
372
- IncludeProvisionerDaemon :true ,
373
- })
374
- coderdPort ,err := strconv .Atoi (client .URL .Port ())
375
- require .NoError (t ,err )
376
371
377
- user := coderdtest .CreateFirstUser (t ,client )
378
- authToken := uuid .NewString ()
379
- version := coderdtest .CreateTemplateVersion (t ,client ,user .OrganizationID ,& echo.Responses {
380
- Parse :echo .ParseComplete ,
381
- ProvisionDryRun :echo .ProvisionComplete ,
382
- Provision : []* proto.Provision_Response {{
383
- Type :& proto.Provision_Response_Complete {
384
- Complete :& proto.Provision_Complete {
385
- Resources : []* proto.Resource {{
386
- Name :"example" ,
387
- Type :"aws_instance" ,
388
- Agents : []* proto.Agent {{
389
- Id :uuid .NewString (),
390
- Auth :& proto.Agent_Token {
391
- Token :authToken ,
392
- },
372
+ setup := func (t * testing.T ) (client * codersdk.Client ,agentID uuid.UUID ,coderdPort uint16 ) {
373
+ client = coderdtest .New (t ,& coderdtest.Options {
374
+ IncludeProvisionerDaemon :true ,
375
+ })
376
+ coderdPortInt ,err := strconv .Atoi (client .URL .Port ())
377
+ require .NoError (t ,err )
378
+
379
+ user := coderdtest .CreateFirstUser (t ,client )
380
+ authToken := uuid .NewString ()
381
+ version := coderdtest .CreateTemplateVersion (t ,client ,user .OrganizationID ,& echo.Responses {
382
+ Parse :echo .ParseComplete ,
383
+ ProvisionDryRun :echo .ProvisionComplete ,
384
+ Provision : []* proto.Provision_Response {{
385
+ Type :& proto.Provision_Response_Complete {
386
+ Complete :& proto.Provision_Complete {
387
+ Resources : []* proto.Resource {{
388
+ Name :"example" ,
389
+ Type :"aws_instance" ,
390
+ Agents : []* proto.Agent {{
391
+ Id :uuid .NewString (),
392
+ Auth :& proto.Agent_Token {
393
+ Token :authToken ,
394
+ },
395
+ }},
393
396
}},
394
- }} ,
397
+ },
395
398
},
396
- },
397
- }},
398
- })
399
- template := coderdtest .CreateTemplate (t ,client ,user .OrganizationID ,version .ID )
400
- coderdtest .AwaitTemplateVersionJob (t ,client ,version .ID )
401
- workspace := coderdtest .CreateWorkspace (t ,client ,user .OrganizationID ,template .ID )
402
- coderdtest .AwaitWorkspaceBuildJob (t ,client ,workspace .LatestBuild .ID )
399
+ }},
400
+ })
401
+ template := coderdtest .CreateTemplate (t ,client ,user .OrganizationID ,version .ID )
402
+ coderdtest .AwaitTemplateVersionJob (t ,client ,version .ID )
403
+ workspace := coderdtest .CreateWorkspace (t ,client ,user .OrganizationID ,template .ID )
404
+ coderdtest .AwaitWorkspaceBuildJob (t ,client ,workspace .LatestBuild .ID )
403
405
404
- agentClient := codersdk .New (client .URL )
405
- agentClient .SessionToken = authToken
406
- agentCloser := agent .New (agent.Options {
407
- FetchMetadata :agentClient .WorkspaceAgentMetadata ,
408
- CoordinatorDialer :agentClient .ListenWorkspaceAgentTailnet ,
409
- Logger :slogtest .Make (t ,nil ).Named ("agent" ).Leveled (slog .LevelDebug ),
410
- })
411
- t .Cleanup (func () {
412
- _ = agentCloser .Close ()
413
- })
414
- resources := coderdtest .AwaitWorkspaceAgents (t ,client ,workspace .LatestBuild .ID )
406
+ agentClient := codersdk .New (client .URL )
407
+ agentClient .SessionToken = authToken
408
+ agentCloser := agent .New (agent.Options {
409
+ FetchMetadata :agentClient .WorkspaceAgentMetadata ,
410
+ CoordinatorDialer :agentClient .ListenWorkspaceAgentTailnet ,
411
+ Logger :slogtest .Make (t ,nil ).Named ("agent" ).Leveled (slog .LevelDebug ),
412
+ })
413
+ t .Cleanup (func () {
414
+ _ = agentCloser .Close ()
415
+ })
416
+ resources := coderdtest .AwaitWorkspaceAgents (t ,client ,workspace .LatestBuild .ID )
417
+
418
+ return client ,resources [0 ].Agents [0 ].ID ,uint16 (coderdPortInt )
419
+ }
415
420
416
421
t .Run ("LinuxAndWindows" ,func (t * testing.T ) {
417
422
t .Parallel ()
@@ -420,6 +425,8 @@ func TestWorkspaceAgentListeningPorts(t *testing.T) {
420
425
return
421
426
}
422
427
428
+ client ,agentID ,coderdPort := setup (t )
429
+
423
430
ctx ,cancel := context .WithTimeout (context .Background (),testutil .WaitLong )
424
431
defer cancel ()
425
432
@@ -431,15 +438,15 @@ func TestWorkspaceAgentListeningPorts(t *testing.T) {
431
438
tcpAddr ,_ := l .Addr ().(* net.TCPAddr )
432
439
433
440
// List ports and ensure that the port we expect to see is there.
434
- res ,err := client .WorkspaceAgentListeningPorts (ctx ,resources [ 0 ]. Agents [ 0 ]. ID )
441
+ res ,err := client .WorkspaceAgentListeningPorts (ctx ,agentID )
435
442
require .NoError (t ,err )
436
443
437
444
var (
438
445
expected = map [uint16 ]bool {
439
446
// expect the listener we made
440
447
uint16 (tcpAddr .Port ):false ,
441
448
// expect the coderdtest server
442
- uint16 ( coderdPort ) :false ,
449
+ coderdPort :false ,
443
450
}
444
451
)
445
452
for _ ,port := range res .Ports {
@@ -461,7 +468,7 @@ func TestWorkspaceAgentListeningPorts(t *testing.T) {
461
468
// Close the listener and check that the port is no longer in the response.
462
469
require .NoError (t ,l .Close ())
463
470
time .Sleep (2 * time .Second )// avoid cache
464
- res ,err = client .WorkspaceAgentListeningPorts (ctx ,resources [ 0 ]. Agents [ 0 ]. ID )
471
+ res ,err = client .WorkspaceAgentListeningPorts (ctx ,agentID )
465
472
require .NoError (t ,err )
466
473
467
474
for _ ,port := range res .Ports {
@@ -478,6 +485,8 @@ func TestWorkspaceAgentListeningPorts(t *testing.T) {
478
485
return
479
486
}
480
487
488
+ client ,agentID ,_ := setup (t )
489
+
481
490
ctx ,cancel := context .WithTimeout (context .Background (),testutil .WaitLong )
482
491
defer cancel ()
483
492
@@ -487,7 +496,7 @@ func TestWorkspaceAgentListeningPorts(t *testing.T) {
487
496
defer l .Close ()
488
497
489
498
// List ports and ensure that the list is empty because we're on darwin.
490
- res ,err := client .WorkspaceAgentListeningPorts (ctx ,resources [ 0 ]. Agents [ 0 ]. ID )
499
+ res ,err := client .WorkspaceAgentListeningPorts (ctx ,agentID )
491
500
require .NoError (t ,err )
492
501
require .Len (t ,res .Ports ,0 )
493
502
})