33 lines
704 B
Ruby
Executable File
33 lines
704 B
Ruby
Executable File
#!/usr/bin/env ruby
|
|
|
|
# Connects to the destination server, then immediately disconnects,
|
|
# simulating a source crash.
|
|
#
|
|
# It then connects again, to check that the destination is still
|
|
# listening.
|
|
|
|
addr, port = *ARGV
|
|
require 'socket'
|
|
require 'timeout'
|
|
|
|
begin
|
|
Timeout.timeout( 2 ) do
|
|
sock = TCPSocket.open( addr, port.to_i )
|
|
sock.close
|
|
end
|
|
rescue Timeout::Error
|
|
$stderr.puts "Failed to connect"
|
|
exit 1
|
|
end
|
|
|
|
Timeout.timeout( 3 ) do
|
|
# Sleep to be sure we don't try to connect too soon. That wouldn't
|
|
# be a problem for the destination, but it would prevent us from
|
|
# determining success or failure here.
|
|
sleep 0.5
|
|
sock = TCPSocket.open( addr, port.to_i )
|
|
sock.close
|
|
end
|
|
|
|
exit 0
|
|
|