diff options
| author | Steve Kemp <steve@steve.org.uk> | 2012-11-13 11:28:56 +0000 | 
|---|---|---|
| committer | Steve Kemp <steve@steve.org.uk> | 2012-11-13 11:28:56 +0000 | 
| commit | f91dfcd641bb66f3588eed7fb3757eded7a66a7c (patch) | |
| tree | fd876d20a1ec59dc4ab53d59218929b70d3e45bc /worker | |
| parent | c6cd3cc81d12b837c60cff8a760e24165a2832a5 (diff) | |
  Moved to class-based API
Diffstat (limited to 'worker')
| -rwxr-xr-x | worker/tests/jabber.rb | 133 | 
1 files changed, 104 insertions, 29 deletions
| diff --git a/worker/tests/jabber.rb b/worker/tests/jabber.rb index 5caeb5b..c037259 100755 --- a/worker/tests/jabber.rb +++ b/worker/tests/jabber.rb @@ -1,51 +1,126 @@ +#!/usr/bin/ruby + + + +require 'socket'  require 'timeout'  # -# Run a Jabber test. -# -# -# Return value -#   TRUE:  The host is up -# -#  FALSE:  The host is not up +# Test that we can receive a response from a Jabber server that looks +# reasonable.  # -def jabber_test ( params ) +class JABBERTest + +  # +  # Data passed from the JSON hash. +  # +  attr_reader :test_data + +  # +  # The error text we return on failure. +  # +  attr_reader :error + +    # -  #  Get the hostname & port to test against. +  # Save the data away. +  # +  def initialize( data ) +    @test_data = data +  end + + +  # +  # Run the test. +  # +  #  Return "true" on success +  # +  #  Return "false" on failure. +  # +  # If the test fails the details should be retrieved from "get_details".    # -  host = params['target_host'] -  port = 5222 +  def run_test +    @error = "" -  puts "Jabber testing host #{host}:#{port}" +    # +    #  Get the hostname & port to test against. +    # +    host = @test_data['target_host'] +    port = 5222 +    puts "Jabber testing host #{host}:#{port}" -  begin -    timeout(3) do +    begin +      timeout(3) do -      begin -        socket = TCPSocket.new( host, port ) -        socket.puts( "QUIT") +        begin +          socket = TCPSocket.new( host, port ) +          socket.puts( "QUIT") -        banner = socket.gets(nil) -        banner = banner[0,20] +          banner = socket.gets(nil) +          banner = banner[0,20] -        socket.close() +          socket.close() -        if ( banner =~ /xml version/i ) -          puts "Jabber alive: #{banner}" -          return true +          if ( banner =~ /xml version/i ) +            puts "Jabber alive: #{banner}" +            return true +          else +            @error = "Banner didn't seem reasonable: #{banner}" +            return false; +          end +        rescue +          @error = "Jabber exception on host #{host}:#{port} - #{$!}" +          return false          end -      rescue -        puts "Jabber exception on host #{host}:#{port} - #{$!}" -        return false        end +    rescue Timeout::Error => e +      @error = "TIMEOUT: #{e}" +      return false      end -  rescue Timeout::Error => e -    puts "TIMEOUT: #{e}" + +    @error = "Misc failure"      return false    end -  return false + + +  # +  #  Return the error text for why this test failed. +  # +  def get_details +    return @error +  end + +end + + +# +# Sample test, for testing. +# +if __FILE__ == $0 then + +  # +  #  Sample data. +  # +  test = { +    "target_host" => "chat.bytemark.co.uk", +    "test_type"   => "jabber", +    "test_alert"  => "Chat is down?", +  } + + +  # +  #  Run the test. +  # +  obj = JABBERTest.new( test ) +  if ( obj.run_test ) +    puts "TEST OK" +  else +    puts "TEST FAILED" +    puts obj.get_details() +  end +  end | 
