Module: HttpTest::Server::Port
Instance Method Summary collapse
-
#available!(port, timeout = 0.1) ⇒ Object
is a given port available? This raises ECONNREFUSED or EHOSTUNREACH if not, and Timeout::Error if we don’t know.
-
#available?(port, timeout = 0.1) ⇒ Boolean
is a given port available? This returns true if so, and false if not or unsure.
-
#choose ⇒ Object
return an unused port.
-
#wait(port, timeout = 10) ⇒ Object
wait until a port becomes available.
Instance Method Details
#available!(port, timeout = 0.1) ⇒ Object
is a given port available? This raises ECONNREFUSED or EHOSTUNREACH if not, and Timeout::Error if we don’t know.
21 22 23 24 25 26 27 28 29 |
# File 'lib/http-test/server/port.rb', line 21 def available!(port, timeout = 0.1) s = nil Timeout.timeout(timeout) do STDERR.print "." s = TCPSocket.new("127.0.0.1", port) end ensure s&.close end |
#available?(port, timeout = 0.1) ⇒ Boolean
is a given port available? This returns true if so, and false if not or unsure.
32 33 34 35 36 37 |
# File 'lib/http-test/server/port.rb', line 32 def available?(port, timeout = 0.1) available!(port, timeout) true rescue Errno::ECONNREFUSED, Errno::EHOSTUNREACH, Timeout::Error false end |
#choose ⇒ Object
return an unused port.
11 12 13 14 15 16 17 |
# File 'lib/http-test/server/port.rb', line 11 def choose server = TCPServer.new('127.0.0.1', 0) port = server.addr[1] ensure # don't know if this is really necessary server&.close end |
#wait(port, timeout = 10) ⇒ Object
wait until a port becomes available. Raises either ECONNREFUSED, EHOSTUNREACH, or Timeout::Error if the port cannot be established.
41 42 43 44 45 46 47 48 |
# File 'lib/http-test/server/port.rb', line 41 def wait(port, timeout = 10) (timeout / 0.1).to_i.times do return true if available?(port) sleep(0.1) end available!(port) end |