summaryrefslogtreecommitdiff
path: root/lib/custodian/protocol-tests/ping.rb
diff options
context:
space:
mode:
authorSteve Kemp <steve@steve.org.uk>2012-11-13 17:22:43 +0000
committerSteve Kemp <steve@steve.org.uk>2012-11-13 17:22:43 +0000
commitab3961ec0603140ac5730f90b067c01e9d73d070 (patch)
treeeacbf6a3573759ea0f1ee8348a09ca39d60028b7 /lib/custodian/protocol-tests/ping.rb
parenta977d57759bbe20ae6a6eff6ef1af29a6b7ff936 (diff)
Renamed and moved files around.
--HG-- rename : util/multi-ping => bin/multi-ping rename : parser/parser.rb => bin/parser.rb rename : worker/worker => bin/worker rename : worker/tests/README => lib/README rename : worker/tests/ftp.rb => lib/custodian/protocol-tests/ftp.rb rename : worker/tests/http.rb => lib/custodian/protocol-tests/http.rb rename : worker/tests/https.rb => lib/custodian/protocol-tests/https.rb rename : worker/tests/jabber.rb => lib/custodian/protocol-tests/jabber.rb rename : worker/tests/ldap.rb => lib/custodian/protocol-tests/ldap.rb rename : worker/tests/ping.rb => lib/custodian/protocol-tests/ping.rb rename : worker/tests/rsync.rb => lib/custodian/protocol-tests/rsync.rb rename : worker/tests/smtp.rb => lib/custodian/protocol-tests/smtp.rb rename : worker/tests/ssh.rb => lib/custodian/protocol-tests/ssh.rb
Diffstat (limited to 'lib/custodian/protocol-tests/ping.rb')
-rwxr-xr-xlib/custodian/protocol-tests/ping.rb116
1 files changed, 116 insertions, 0 deletions
diff --git a/lib/custodian/protocol-tests/ping.rb b/lib/custodian/protocol-tests/ping.rb
new file mode 100755
index 0000000..d6ac877
--- /dev/null
+++ b/lib/custodian/protocol-tests/ping.rb
@@ -0,0 +1,116 @@
+#!/usr/bin/ruby
+
+
+
+require 'socket'
+require 'timeout'
+
+
+#
+# Test that we can receive a ping response from the remote host.
+#
+class PINGTest
+
+ #
+ # Data passed from the JSON hash.
+ #
+ attr_reader :test_data
+
+ #
+ # The error text we return on failure.
+ #
+ attr_reader :error
+
+
+
+ #
+ # 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 "error()".
+ #
+ def run_test
+ @error = ""
+
+
+ #
+ # Find the binary
+ #
+ binary = nil
+ binary = "./util/multi-ping" if ( File.exists?( "./util/multi-ping" ) )
+ binary = "../util/multi-ping" if ( File.exists?( "../util/multi-ping" ) )
+ binary = "../../util/multi-ping" if ( File.exists?( "../../util/multi-ping" ) )
+
+ if ( binary.nil? )
+ @error = "Failed to find 'multi-ping'"
+ return false
+ end
+
+
+ #
+ # Get the hostname to test against.
+ #
+ host = @test_data['target_host']
+ puts "ping testing host #{host}" if ( @test_data['verbose'] )
+
+
+ if ( system( "#{binary} #{host}" ) == true )
+ puts "PING OK" if ( @test_data['verbose'] )
+ return true
+ else
+ @error = "Ping failed. TODO: Mtr"
+ return false
+ end
+
+ end
+
+
+ #
+ # Return the error text for why this test failed.
+ #
+ def error()
+ return @error
+ end
+
+end
+
+
+#
+# Sample test, for testing.
+#
+if __FILE__ == $0 then
+
+ #
+ # Sample data.
+ #
+ test = {
+ "target_host" => "upload.ns.bytemark.co.uk",
+ "test_type" => "ping",
+ "verbose" => 1,
+ "test_alert" => "Pingly faily",
+ }
+
+
+ #
+ # Run the test.
+ #
+ obj = PINGTest.new( test )
+ if ( obj.run_test )
+ puts "TEST OK"
+ else
+ puts "TEST FAILED"
+ puts obj.error()
+ end
+
+end