Sha256: ae429fda9f04644825e66d5f186d58a4cc340dde9852e9daa8d618403d3df883

Contents?: true

Size: 735 Bytes

Versions: 3

Compression:

Stored size: 735 Bytes

Contents

module Selenium
  module WebDriver
    class PortProber
      def self.above(port)
        port += 1 until free? port
        port
      end

      def self.random
        # TODO: Avoid this
        #
        # (a) should pick a port that's guaranteed to be free on all interfaces
        # (b) should pick a random port outside the ephemeral port range
        #
        server = TCPServer.new(Platform.localhost, 0)
        port   = server.addr[1]
        server.close

        port
      end

      def self.free?(port)
        Platform.interfaces.each { |host| TCPServer.new(host, port).close }
        true
      rescue SocketError, Errno::EADDRINUSE
        false
      end

    end # PortProber
  end # WebDriver
end # Selenium

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
selenium-webdriver-2.24.0 lib/selenium/webdriver/common/port_prober.rb
selenium-webdriver-2.22.2 lib/selenium/webdriver/common/port_prober.rb
selenium-webdriver-2.22.2.rc2 lib/selenium/webdriver/common/port_prober.rb