summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorSteve Kemp <steve@steve.org.uk>2012-11-14 21:48:31 +0000
committerSteve Kemp <steve@steve.org.uk>2012-11-14 21:48:31 +0000
commit8d7af91b9409ac5797f02b9a2d2769001d7031cb (patch)
tree7ee604638c68b99c7af22106f15ae97381cfdf3e /lib
parente26d29b15c8012197c3ce72fc5dd75652daa38a6 (diff)
Timeout correctly.
Diffstat (limited to 'lib')
-rwxr-xr-xlib/custodian/protocol-tests/http.rb102
-rwxr-xr-xlib/custodian/protocol-tests/https.rb112
2 files changed, 107 insertions, 107 deletions
diff --git a/lib/custodian/protocol-tests/http.rb b/lib/custodian/protocol-tests/http.rb
index c11e27a..34fc472 100755
--- a/lib/custodian/protocol-tests/http.rb
+++ b/lib/custodian/protocol-tests/http.rb
@@ -113,64 +113,66 @@ class HTTPTest
#
# NOTE: This came from sentinel.
def getURL (uri_str, timeout)
- begin
- uri_str = 'http://' + uri_str unless uri_str.match(/^http/)
- url = URI.parse(uri_str)
- http = Net::HTTP.new(url.host, url.port)
- http.open_timeout = timeout
- http.read_timeout = timeout
-
- if (url.scheme == "https")
- http.use_ssl = true
- http.verify_mode = OpenSSL::SSL::VERIFY_NONE
- end
- response = nil
+ timeout( timeout ) do
+ begin
+ uri_str = 'http://' + uri_str unless uri_str.match(/^http/)
+ url = URI.parse(uri_str)
+ http = Net::HTTP.new(url.host, url.port)
+ http.open_timeout = timeout
+ http.read_timeout = timeout
+
+ if (url.scheme == "https")
+ http.use_ssl = true
+ http.verify_mode = OpenSSL::SSL::VERIFY_NONE
+ end
- #
- # Ensure we have a trailing "/"
- #
- if ( url.path.empty? )
- url.path = "/"
- end
+ response = nil
- if nil == url.query
- response = http.start { http.get(url.path) }
- else
- response = http.start { http.get("#{url.path}?#{url.query}") }
- end
+ #
+ # Ensure we have a trailing "/"
+ #
+ if ( url.path.empty? )
+ url.path = "/"
+ end
- case response
- when Net::HTTPRedirection
- then
- newURL = response['location'].match(/^http/)?
- response['Location']:uri_str+response['Location']
- return( getURL(newURL, timeout) )
- else
- @status = response.code.to_i
- @body = response.body
- end
+ if nil == url.query
+ response = http.start { http.get(url.path) }
+ else
+ response = http.start { http.get("#{url.path}?#{url.query}") }
+ end
- return true
- rescue Errno::EHOSTUNREACH => ex
- @error = "no route to host"
- return false
- rescue Timeout::Error => ex
- @error = "time out reached"
- return false
- rescue Errno::ECONNREFUSED => ex
- @error = "Connection refused"
- return false
- rescue => ex
- @error = ex
- return false
+ case response
+ when Net::HTTPRedirection
+ then
+ newURL = response['location'].match(/^http/)?
+ response['Location']:uri_str+response['Location']
+ return( getURL(newURL, timeout) )
+ else
+ @status = response.code.to_i
+ @body = response.body
+ end
+
+ return true
+ rescue Errno::EHOSTUNREACH => ex
+ @error = "no route to host"
+ return false
+ rescue Timeout::Error => ex
+ @error = "time out reached"
+ return false
+ rescue Errno::ECONNREFUSED => ex
+ @error = "Connection refused"
+ return false
+ rescue Timeout::Error => e
+ @error = "TIMEOUT: #{e}"
+ return false
+ rescue => ex
+ @error = ex
+ return false
+ end
end
- @error = "Misc failure"
- return false
end
-
-
end
diff --git a/lib/custodian/protocol-tests/https.rb b/lib/custodian/protocol-tests/https.rb
index fe0cd99..72dd42c 100755
--- a/lib/custodian/protocol-tests/https.rb
+++ b/lib/custodian/protocol-tests/https.rb
@@ -42,7 +42,6 @@ class HTTPSTest
if ( @test_data["test_port"].nil? )
@error = "Missing port for the test."
raise ArgumentError, @error
-
end
end
@@ -81,8 +80,6 @@ class HTTPSTest
end
end
-
-
#
# Do we need to search for text in the body of the reply?
#
@@ -116,64 +113,66 @@ class HTTPSTest
#
# NOTE: This came from sentinel.
def getURL (uri_str, timeout)
- begin
- uri_str = 'http://' + uri_str unless uri_str.match(/^http/)
- url = URI.parse(uri_str)
- http = Net::HTTP.new(url.host, url.port)
- http.open_timeout = timeout
- http.read_timeout = timeout
-
- if (url.scheme == "https")
- http.use_ssl = true
- http.verify_mode = OpenSSL::SSL::VERIFY_NONE
- end
- response = nil
+ timeout( timeout ) do
+ begin
+ uri_str = 'http://' + uri_str unless uri_str.match(/^http/)
+ url = URI.parse(uri_str)
+ http = Net::HTTP.new(url.host, url.port)
+ http.open_timeout = timeout
+ http.read_timeout = timeout
+
+ if (url.scheme == "https")
+ http.use_ssl = true
+ http.verify_mode = OpenSSL::SSL::VERIFY_NONE
+ end
- #
- # Ensure we have a trailing "/"
- #
- if ( url.path.empty? )
- url.path = "/"
- end
+ response = nil
- if nil == url.query
- response = http.start { http.get(url.path) }
- else
- response = http.start { http.get("#{url.path}?#{url.query}") }
- end
+ #
+ # Ensure we have a trailing "/"
+ #
+ if ( url.path.empty? )
+ url.path = "/"
+ end
- case response
- when Net::HTTPRedirection
- then
- newURL = response['location'].match(/^http/)?
- response['Location']:uri_str+response['Location']
- return( getURL(newURL, timeout) )
- else
- @status = response.code.to_i
- @body = response.body
- end
+ if nil == url.query
+ response = http.start { http.get(url.path) }
+ else
+ response = http.start { http.get("#{url.path}?#{url.query}") }
+ end
- return true
- rescue Errno::EHOSTUNREACH => ex
- @error = "no route to host"
- return false
- rescue Timeout::Error => ex
- @error = "time out reached"
- return false
- rescue Errno::ECONNREFUSED => ex
- @error = "Connection refused"
- return false
- rescue => ex
- @error = ex
- return false
+ case response
+ when Net::HTTPRedirection
+ then
+ newURL = response['location'].match(/^http/)?
+ response['Location']:uri_str+response['Location']
+ return( getURL(newURL, timeout) )
+ else
+ @status = response.code.to_i
+ @body = response.body
+ end
+
+ return true
+ rescue Errno::EHOSTUNREACH => ex
+ @error = "no route to host"
+ return false
+ rescue Timeout::Error => ex
+ @error = "time out reached"
+ return false
+ rescue Errno::ECONNREFUSED => ex
+ @error = "Connection refused"
+ return false
+ rescue Timeout::Error => e
+ @error = "TIMEOUT: #{e}"
+ return false
+ rescue => ex
+ @error = ex
+ return false
+ end
end
- @error = "Misc failure"
- return false
end
-
-
end
@@ -187,13 +186,12 @@ if __FILE__ == $0 then
# Sample data.
#
test = {
- "target_host" => "http://www.steve.org.uk/",
+ "target_host" => "http://collector2.sh.bytemark.co.uk/",
"test_type" => "http",
"verbose" => 1,
- "timeout" => 5,
+ "timeout" => 10,
"test_port" => 80,
- "test_alert" => "Steve's website is unavailable",
- "http_text" => "Steve Kemp",
+ "test_alert" => "Collector is unavailable",
"http_status" => "200"
}