module HttpTest::Server::Port

Public Instance Methods

available!(port, timeout = 0.1) click to toggle source

is a given port available? This raises ECONNREFUSED or EHOSTUNREACH if not, and Timeout::Error if we don't know.

# 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) click to toggle source

is a given port available? This returns true if so, and false if not or unsure.

# 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() click to toggle source

return an unused port.

# 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) click to toggle source

wait until a port becomes available. Raises either ECONNREFUSED, EHOSTUNREACH, or Timeout::Error if the port cannot be established.

# 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