summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiklós Fazekas <mfazekas@szemafor.com>2023-02-27 11:02:37 +0100
committerMiklós Fazekas <mfazekas@szemafor.com>2023-02-27 11:09:22 +0100
commite570e277165ef5ffe2f6eac058629d33ae8a3f18 (patch)
treed26f07c25dddfdd0315d96aabaf1439714458787
parentfbaa5b79a14869574487f83201f6cfcc996d90bc (diff)
downloadnet-ssh-e570e277165ef5ffe2f6eac058629d33ae8a3f18.tar.gz
test: added integration test for connection timeoutmfazekas/add-test-for-conn-timeout
-rw-r--r--test/integration/test_handshake_timeout.rb32
1 files changed, 32 insertions, 0 deletions
diff --git a/test/integration/test_handshake_timeout.rb b/test/integration/test_handshake_timeout.rb
new file mode 100644
index 0000000..c297377
--- /dev/null
+++ b/test/integration/test_handshake_timeout.rb
@@ -0,0 +1,32 @@
+require_relative 'common'
+require 'net/ssh'
+
+class TestHandshakeTimeout < NetSSHTest
+ include IntegrationTestHelpers
+
+ def with_non_responding_server(&block)
+ port = "4444"
+ pipe = IO.popen("/bin/nc -l -k -p #{port}")
+ begin
+ yield(port)
+ ensure
+ Process.kill("TERM", pipe.pid)
+ end
+ end
+
+ def nc_port_open?(port)
+ Socket.tcp("localhost", port, connect_timeout: 1) { true } rescue false # rubocop:disable Style/RescueModifier
+ end
+
+ def test_error_exitstatus
+ with_non_responding_server do |port|
+ sleep(0.1) until nc_port_open?(port.to_i)
+
+ assert_raises(Net::SSH::ConnectionTimeout, 'timeout during server version negotiating') do
+ Net::SSH.start("localhost", "net_ssh_1", password: 'foopwd', port: port, timeout: 1) do |ssh|
+ ssh.exec! "exit 42"
+ end
+ end
+ end
+ end
+end