@@ -695,6 +695,48 @@ func TestAgent(t *testing.T) {
695
695
return err == nil
696
696
}, testutil .WaitShort , testutil .IntervalFast )
697
697
})
698
+ t .Run ("ListeningPorts" , func (t * testing.T ) {
699
+ t .Parallel ()
700
+
701
+ if runtime .GOOS != "linux" {
702
+ t .Skip ("Only supported on linux currently" )
703
+ }
704
+
705
+ conn , _ , _ := setupAgent (t , codersdk.WorkspaceAgentMetadata {}, testutil .WaitShort )
706
+ defer conn .Close ()
707
+
708
+ var wantPorts []uint16
709
+ for i := 0 ; i < 4 ; i ++ {
710
+ l , err := net .Listen ("tcp" , "127.0.0.1:0" )
711
+ require .NoError (t , err )
712
+ t .Cleanup (func () { l .Close () })
713
+ _ , portStr , err := net .SplitHostPort (l .Addr ().String ())
714
+ require .NoError (t , err )
715
+ portInt , err := strconv .Atoi (portStr )
716
+ require .NoError (t , err )
717
+ wantPorts = append (wantPorts , uint16 (portInt ))
718
+ }
719
+
720
+ ctx := context .Background ()
721
+ require .Eventually (t , func () bool {
722
+ ports , err := conn .ListeningPorts (ctx )
723
+ if err != nil {
724
+ panic (err )
725
+ }
726
+ outer:
727
+ for _ , wantPort := range wantPorts {
728
+ for _ , port := range ports .Ports {
729
+ if port .Port == wantPort {
730
+ // found this port
731
+ continue outer
732
+ }
733
+ }
734
+ t .Errorf ("didn't find %v" , wantPort )
735
+ return false
736
+ }
737
+ return true
738
+ }, testutil .WaitMedium , testutil .IntervalFast )
739
+ })
698
740
}
699
741
700
742
func setupSSHCommand (t * testing.T , beforeArgs []string , afterArgs []string ) * exec.Cmd {
0 commit comments