1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 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
|