Class: LitmusPaper::Dependency::TCP

Inherits:
Object
  • Object
show all
Defined in:
lib/litmus_paper/dependency/tcp.rb

Instance Method Summary collapse

Constructor Details

#initialize(ip, port, options = {}) ⇒ TCP

Returns a new instance of TCP.



4
5
6
7
8
9
# File 'lib/litmus_paper/dependency/tcp.rb', line 4

def initialize(ip, port, options = {})
  @ip, @port = ip, port
  @timeout = options.fetch(:timeout_seconds, 5)
  @input_data = options[:input_data]
  @expected_output = options[:expected_output]
end

Instance Method Details

#available?Boolean

Returns:

  • (Boolean)


11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/litmus_paper/dependency/tcp.rb', line 11

def available?
  response = true

  Timeout.timeout(@timeout) do
    socket = TCPSocket.new(@ip, @port)
    if @expected_output
      socket.puts(@input_data) if @input_data
      data = socket.gets
      response = data.chomp == @expected_output
      LitmusPaper.logger.info("Response (#{response}) does not match expected output (#{@expected_output})")
    end
    socket.close
  end

  response
rescue Timeout::Error
  LitmusPaper.logger.info("Timeout connecting #{@ip}:#{@port}")
  false
rescue => e
  LitmusPaper.logger.info("TCP available check to #{@ip}:#{@port} failed with #{e.message}")
  false
end

#to_sObject



34
35
36
# File 'lib/litmus_paper/dependency/tcp.rb', line 34

def to_s
  "Dependency::TCP(tcp://#{@ip}:#{@port})"
end