@@ -214,46 +214,59 @@ func TestAgent_Stats_Magic(t *testing.T) {
214
214
_ , b , _ , ok := runtime .Caller (0 )
215
215
require .True (t , ok )
216
216
dir := filepath .Join (filepath .Dir (b ), "../scripts/echoserver/main.go" )
217
- echoServerCmd := exec .Command ("go" , "run" , dir ,
218
- "-D" , agentssh .MagicProcessCmdlineJetBrains )
219
- stdout , err := echoServerCmd .StdoutPipe ()
220
- require .NoError (t , err )
221
- err = echoServerCmd .Start ()
222
- require .NoError (t , err )
223
- defer echoServerCmd .Process .Kill ()
224
217
225
- // The echo server prints its port as the first line.
226
- sc := bufio .NewScanner (stdout )
227
- sc .Scan ()
228
- remotePort := sc .Text ()
218
+ spawnServer := func (network string ) (string , * exec.Cmd ) {
219
+ echoServerCmd := exec .Command ("go" , "run" , dir ,
220
+ network , "-D" , agentssh .MagicProcessCmdlineJetBrains )
221
+ stdout , err := echoServerCmd .StdoutPipe ()
222
+ require .NoError (t , err )
223
+ err = echoServerCmd .Start ()
224
+ require .NoError (t , err )
225
+ t .Cleanup (func () {
226
+ echoServerCmd .Process .Kill ()
227
+ })
228
+
229
+ // The echo server prints its port as the first line.
230
+ sc := bufio .NewScanner (stdout )
231
+ sc .Scan ()
232
+ return sc .Text (), echoServerCmd
233
+ }
234
+
235
+ port4 , cmd4 := spawnServer ("tcp4" )
236
+ port6 , cmd6 := spawnServer ("tcp6" )
229
237
230
238
//nolint:dogsled
231
239
conn , _ , stats , _ , _ := setupAgent (t , agentsdk.Manifest {}, 0 )
240
+ defer conn .Close ()
241
+
232
242
sshClient , err := conn .SSHClient (ctx )
233
243
require .NoError (t , err )
234
244
235
- tunneledConn , err := sshClient .Dial ("tcp " , fmt .Sprintf ("127.0.0.1:%s" , remotePort ))
245
+ tunnel4 , err := sshClient .Dial ("tcp4 " , fmt .Sprintf ("127.0.0.1:%s" , port4 ))
236
246
require .NoError (t , err )
237
- t . Cleanup ( func () {
238
- // always close on failure of test
239
- _ = conn . Close ( )
240
- _ = tunneledConn . Close ( )
241
- } )
247
+ defer tunnel4 . Close ()
248
+
249
+ tunnel6 , err := sshClient . Dial ( "tcp6" , fmt . Sprintf ( "[::]:%s" , port6 ) )
250
+ require . NoError ( t , err )
251
+ defer tunnel6 . Close ( )
242
252
243
253
require .Eventuallyf (t , func () bool {
244
254
s , ok := <- stats
245
255
t .Logf ("got stats with conn open: ok=%t, ConnectionCount=%d, SessionCountJetBrains=%d" ,
246
256
ok , s .ConnectionCount , s .SessionCountJetBrains )
247
257
return ok && s .ConnectionCount > 0 &&
248
- s .SessionCountJetBrains == 1
258
+ s .SessionCountJetBrains == 2
249
259
}, testutil .WaitLong , testutil .IntervalFast ,
250
260
"never saw stats with conn open" ,
251
261
)
252
262
253
263
// Kill the server and connection after checking for the echo.
254
- requireEcho (t , tunneledConn )
255
- _ = echoServerCmd .Process .Kill ()
256
- _ = tunneledConn .Close ()
264
+ requireEcho (t , tunnel4 )
265
+ requireEcho (t , tunnel6 )
266
+ _ = cmd4 .Process .Kill ()
267
+ _ = cmd6 .Process .Kill ()
268
+ _ = tunnel4 .Close ()
269
+ _ = tunnel6 .Close ()
257
270
258
271
require .Eventuallyf (t , func () bool {
259
272
s , ok := <- stats
0 commit comments