@ -99,9 +99,35 @@ func TestCliBytesUpDownTransferData(t *testing.T) {
return fmt . Errorf ( "no connections found in session" )
}
bytesUp = int ( newSessionReadResult . Item . Connections [ 0 ] . BytesUp )
bytesDown = int ( newSessionReadResult . Item . Connections [ 0 ] . BytesDown )
if ! ( bytesUp > 0 && bytesDown > 0 ) {
conn := newSessionReadResult . Item . Connections [ 0 ]
bytesUp = int ( conn . BytesUp )
bytesDown = int ( conn . BytesDown )
// Log connection details for debugging rare failures
t . Logf ( "Connection - bytes_up: %d, bytes_down: %d, closed_reason: %q, client: %s:%d, endpoint: %s:%d, session status: %s" ,
bytesUp , bytesDown , conn . ClosedReason ,
conn . ClientTcpAddress , conn . ClientTcpPort ,
conn . EndpointTcpAddress , conn . EndpointTcpPort ,
newSessionReadResult . Item . Status ,
)
// Check if the SSH command failed early
select {
case result := <- errChan :
if result . Err != nil {
return backoff . Permanent ( fmt . Errorf ( "SSH command failed, stdout: %s, stderr: %s" , string ( result . Stdout ) , string ( result . Stderr ) ) )
}
return backoff . Permanent ( fmt . Errorf ( "SSH command completed unexpectedly early, stdout: %s, stderr: %s" , string ( result . Stdout ) , string ( result . Stderr ) ) )
default :
// Command still running, continue checking bytes
}
// Check if connection was closed prematurely
if conn . ClosedReason != "" {
return backoff . Permanent ( fmt . Errorf ( "connection closed before data transmission: %s" , conn . ClosedReason ) )
}
if bytesUp <= 0 || bytesDown <= 0 {
return fmt . Errorf (
"bytes_up: %d, bytes_down: %d, bytes_up or bytes_down is not greater than 0" ,
bytesUp ,
@ -109,7 +135,6 @@ func TestCliBytesUpDownTransferData(t *testing.T) {
)
}
t . Logf ( "bytes_up: %d, bytes_down: %d" , bytesUp , bytesDown )
return nil
} ,
backoff . WithMaxRetries ( backoff . NewConstantBackOff ( 3 * time . Second ) , 5 ) ,