Class: TCPSocket

Inherits:
Object
  • Object
show all
Defined in:
lib/tcpsocket-wait.rb

Overview

Stolen from selenium and webrat.

Class Method Summary collapse

Class Method Details

.listening_service?(options) ⇒ Boolean

Returns:

  • (Boolean)


27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/tcpsocket-wait.rb', line 27

def self.listening_service?(options)
  Timeout::timeout(options[:timeout] || 20) do
    begin
      socket = TCPSocket.new(options[:host], options[:port])
      socket.close unless socket.nil?
      true
    rescue Errno::ECONNREFUSED,
           Errno::EBADF           # Windows
      false
    end
  end
end

.wait_for_service_termination_with_timeout(options) ⇒ Object



17
18
19
20
21
22
23
24
25
# File 'lib/tcpsocket-wait.rb', line 17

def self.wait_for_service_termination_with_timeout(options)
  start_time = Time.now

  while listening_service?(options)
    if options[:timeout] && (Time.now > start_time + options[:timeout])
      raise SocketError.new("Socket did not terminate within #{options[:timeout]} seconds")
    end
  end
end

.wait_for_service_with_timeout(options) ⇒ Object



6
7
8
9
10
11
12
13
14
15
# File 'lib/tcpsocket-wait.rb', line 6

def self.wait_for_service_with_timeout(options)
  start_time = Time.now

  until listening_service?(options)

    if options[:timeout] && (Time.now > start_time + options[:timeout])
      raise SocketError.new("Socket did not open within #{options[:timeout]} seconds")
    end
  end
end