@@ -57,24 +57,59 @@ func TestAgent(t *testing.T) {
57
57
t .Run (fmt .Sprintf ("tailscale=%v" , tailscale ), func (t * testing.T ) {
58
58
t .Parallel ()
59
59
60
- var derpMap * tailcfg.DERPMap
61
- if tailscale {
62
- derpMap = tailnettest .RunDERPAndSTUN (t )
60
+ setupAgent := func (t * testing.T ) (agent.Conn , <- chan * agent.Stats ) {
61
+ var derpMap * tailcfg.DERPMap
62
+ if tailscale {
63
+ derpMap = tailnettest .RunDERPAndSTUN (t )
64
+ }
65
+ conn , stats := setupAgent (t , agent.Metadata {
66
+ DERPMap : derpMap ,
67
+ }, 0 )
68
+ assert .Empty (t , <- stats )
69
+ return conn , stats
63
70
}
64
- conn , stats := setupAgent (t , agent.Metadata {
65
- DERPMap : derpMap ,
66
- }, 0 )
67
- assert .Empty (t , <- stats )
68
-
69
- sshClient , err := conn .SSHClient ()
70
- require .NoError (t , err )
71
- session , err := sshClient .NewSession ()
72
- require .NoError (t , err )
73
- defer session .Close ()
74
71
75
- assert .EqualValues (t , 1 , (<- stats ).NumConns )
76
- assert .Greater (t , (<- stats ).RxBytes , int64 (0 ))
77
- assert .Greater (t , (<- stats ).TxBytes , int64 (0 ))
72
+ t .Run ("SSH" , func (t * testing.T ) {
73
+ t .Parallel ()
74
+ conn , stats := setupAgent (t )
75
+
76
+ sshClient , err := conn .SSHClient ()
77
+ require .NoError (t , err )
78
+ session , err := sshClient .NewSession ()
79
+ require .NoError (t , err )
80
+ defer session .Close ()
81
+
82
+ assert .EqualValues (t , 1 , (<- stats ).NumConns )
83
+ assert .Greater (t , (<- stats ).RxBytes , int64 (0 ))
84
+ assert .Greater (t , (<- stats ).TxBytes , int64 (0 ))
85
+ })
86
+
87
+ t .Run ("ReconnectingPTY" , func (t * testing.T ) {
88
+ t .Parallel ()
89
+
90
+ conn , stats := setupAgent (t )
91
+
92
+ ptyConn , err := conn .ReconnectingPTY (uuid .NewString (), 128 , 128 , "/bin/bash" )
93
+ require .NoError (t , err )
94
+ defer ptyConn .Close ()
95
+
96
+ data , err := json .Marshal (agent.ReconnectingPTYRequest {
97
+ Data : "echo test\r \n " ,
98
+ })
99
+ require .NoError (t , err )
100
+ _ , err = ptyConn .Write (data )
101
+ require .NoError (t , err )
102
+
103
+ require .Eventually (t , func () bool {
104
+ s , ok := (<- stats )
105
+ return ok && s .NumConns > 0
106
+ }, testutil .WaitShort , testutil .IntervalFast ,
107
+ "never saw conn" ,
108
+ )
109
+ assert .EqualValues (t , 1 , (<- stats ).NumConns )
110
+ assert .Greater (t , (<- stats ).RxBytes , int64 (0 ))
111
+ assert .Greater (t , (<- stats ).TxBytes , int64 (0 ))
112
+ })
78
113
})
79
114
}
80
115
})
0 commit comments