opticon 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.loadpath +5 -0
- data/.project +17 -0
- data/CHANGELOG.txt +9 -0
- data/History.txt +0 -0
- data/Manifest.txt +3 -2
- data/Rakefile +2 -1
- data/examples/sample.rb +1 -1
- data/lib/opticon/http.rb +8 -4
- data/lib/opticon/notifier.rb +1 -1
- data/lib/opticon/service.rb +2 -2
- data/lib/opticon/tester.rb +25 -19
- data/lib/opticon/version.rb +1 -1
- data/lib/opticon.rb +11 -2
- data/test/opticon/tester_test.rb +1 -1
- metadata +63 -49
data/.loadpath
ADDED
data/.project
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<projectDescription>
|
3
|
+
<name>opticon</name>
|
4
|
+
<comment></comment>
|
5
|
+
<projects>
|
6
|
+
</projects>
|
7
|
+
<buildSpec>
|
8
|
+
<buildCommand>
|
9
|
+
<name>org.rubypeople.rdt.core.rubybuilder</name>
|
10
|
+
<arguments>
|
11
|
+
</arguments>
|
12
|
+
</buildCommand>
|
13
|
+
</buildSpec>
|
14
|
+
<natures>
|
15
|
+
<nature>org.rubypeople.rdt.core.rubynature</nature>
|
16
|
+
</natures>
|
17
|
+
</projectDescription>
|
data/CHANGELOG.txt
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
=== 0.0.3 :: 2008-03-02
|
2
|
+
|
3
|
+
* When a service doesn't respond, a ConnectionFailure is now correctly
|
4
|
+
recorded. You can change how long Opticon will wait for a connection by
|
5
|
+
setting the Opticon.default_timeout value. The timeout is 3 seconds by
|
6
|
+
default.
|
7
|
+
* Changed require paths to fix strange loading problems experienced
|
8
|
+
by some people.
|
9
|
+
|
1
10
|
=== 0.0.2 :: 2007-11-15
|
2
11
|
|
3
12
|
* A series of tests on a service can now be specified as a block to the
|
data/History.txt
ADDED
File without changes
|
data/Manifest.txt
CHANGED
data/Rakefile
CHANGED
@@ -20,7 +20,8 @@ HOMEPATH = "http://#{RUBYFORGE_PROJECT}.rubyforge.org"
|
|
20
20
|
DEPS = ['actionmailer']
|
21
21
|
|
22
22
|
NAME = "opticon"
|
23
|
-
REV =
|
23
|
+
REV = nil
|
24
|
+
#REV = `svn info`[/Revision: (\d+)/, 1] rescue nil
|
24
25
|
VERS = ENV['VERSION'] || (Opticon::VERSION::STRING + (REV ? ".#{REV}" : ""))
|
25
26
|
CLEAN.include ['**/.*.sw?', '*.gem', '.config']
|
26
27
|
RDOC_OPTS = ['--quiet', '--title', "opticon documentation",
|
data/examples/sample.rb
CHANGED
data/lib/opticon/http.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'net/http'
|
2
2
|
require 'net/https'
|
3
3
|
require 'uri'
|
4
|
+
require 'timeout'
|
4
5
|
|
5
6
|
module Opticon
|
6
7
|
module HTTP
|
@@ -28,11 +29,14 @@ module Opticon
|
|
28
29
|
http.use_ssl = uri.scheme == "https"
|
29
30
|
|
30
31
|
response = nil
|
31
|
-
|
32
|
-
|
33
|
-
|
32
|
+
|
33
|
+
timeout(Opticon.default_timeout) do
|
34
|
+
http.start do
|
35
|
+
path = uri.path.empty? ? '/' : uri.path
|
36
|
+
response = http.request_get(path)
|
37
|
+
end
|
34
38
|
end
|
35
|
-
|
39
|
+
|
36
40
|
response
|
37
41
|
end
|
38
42
|
end
|
data/lib/opticon/notifier.rb
CHANGED
data/lib/opticon/service.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
require 'uri'
|
2
|
-
require '
|
2
|
+
require File.dirname(File.expand_path(__FILE__))+'/tester'
|
3
3
|
|
4
4
|
module Opticon
|
5
5
|
class Service
|
@@ -62,7 +62,7 @@ module Opticon
|
|
62
62
|
|
63
63
|
debug = "#{@uri} #{tester_type} #{condition.inspect}?"
|
64
64
|
|
65
|
-
if tester.
|
65
|
+
if tester.run(condition)
|
66
66
|
puts "#{debug} ==> PASSED!" if ARGV.include?("-v")
|
67
67
|
else
|
68
68
|
puts "#{debug} ==> FAILED!" if ARGV.include?("-v")
|
data/lib/opticon/tester.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
require '
|
2
|
-
require '
|
1
|
+
require File.dirname(File.expand_path(__FILE__))+'/http'
|
2
|
+
require File.dirname(File.expand_path(__FILE__))+'/failure'
|
3
3
|
|
4
4
|
module Opticon
|
5
5
|
module Tester
|
@@ -10,11 +10,12 @@ module Opticon
|
|
10
10
|
include Opticon::HTTP
|
11
11
|
|
12
12
|
# Wrapper for calling the test method.
|
13
|
-
#
|
13
|
+
# Call this instead of invoking test directly.
|
14
14
|
def run(condition)
|
15
15
|
begin
|
16
16
|
test(condition)
|
17
|
-
rescue SocketError, TimeoutError, Net::HTTPError,
|
17
|
+
rescue SocketError, TimeoutError, Net::HTTPError,
|
18
|
+
Errno::ECONNREFUSED, Timeout::Error => e
|
18
19
|
@failure = Opticon::Failure::ConnectionFailure.new(uri, condition, nil)
|
19
20
|
@failure.exception = $!
|
20
21
|
false
|
@@ -24,6 +25,7 @@ module Opticon
|
|
24
25
|
|
25
26
|
# Tests that the service responds with some given HTTP status code.
|
26
27
|
class ResponseCodeTester < Base
|
28
|
+
protected
|
27
29
|
def test(condition)
|
28
30
|
case condition
|
29
31
|
when :ok
|
@@ -50,14 +52,15 @@ module Opticon
|
|
50
52
|
|
51
53
|
private
|
52
54
|
def responds_with_code(codes)
|
53
|
-
|
55
|
+
r = self.response
|
56
|
+
|
54
57
|
if codes.kind_of? Integer
|
55
|
-
result = codes ==
|
58
|
+
result = codes == r.code.to_i
|
56
59
|
else
|
57
|
-
result = codes.include?
|
60
|
+
result = codes.include? r.code.to_i
|
58
61
|
end
|
59
62
|
|
60
|
-
@failure = Opticon::Failure::ResponseCodeTestFailure.new(uri, codes,
|
63
|
+
@failure = Opticon::Failure::ResponseCodeTestFailure.new(uri, codes, r) unless result
|
61
64
|
return result
|
62
65
|
end
|
63
66
|
|
@@ -85,35 +88,38 @@ module Opticon
|
|
85
88
|
# Tests that the service responds with content that matches some given
|
86
89
|
# string or regular expression.
|
87
90
|
class ContentTester < Base
|
91
|
+
protected
|
88
92
|
def test(condition)
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
+
r = self.response
|
94
|
+
|
95
|
+
unless (200..206).include?(r.code.to_i)
|
96
|
+
@failure = Opticon::Failure::ContentTestFailure.new(uri, condition, r)
|
97
|
+
if (300..307).include?(r.code.to_i)
|
98
|
+
@failure.exception = RuntimeError.new("Request was redirected to #{r['location']}.")
|
93
99
|
else
|
94
|
-
@failure.exception = RuntimeError.new("Request returned code '#{
|
100
|
+
@failure.exception = RuntimeError.new("Request returned code '#{r.message}'"+
|
95
101
|
" (#{response.code}) but response must be a 2xx HTTP status code.")
|
96
102
|
end
|
97
103
|
return false
|
98
104
|
end
|
99
105
|
|
100
|
-
unless
|
101
|
-
@failure = Opticon::Failure::ContentTestFailure.new(uri, condition,
|
102
|
-
@failure.exception = RuntimeError.new("Response did not include a body (HTTP response: #{
|
106
|
+
unless r.class.body_permitted?
|
107
|
+
@failure = Opticon::Failure::ContentTestFailure.new(uri, condition, r)
|
108
|
+
@failure.exception = RuntimeError.new("Response did not include a body (HTTP response: #{r.inspect})")
|
103
109
|
return false
|
104
110
|
end
|
105
111
|
|
106
112
|
case condition
|
107
113
|
when Regexp
|
108
|
-
result = condition =~
|
114
|
+
result = condition =~ r.body
|
109
115
|
when String
|
110
|
-
result =
|
116
|
+
result = r.body.include? condition
|
111
117
|
end
|
112
118
|
|
113
119
|
if result
|
114
120
|
@failure = nil
|
115
121
|
else
|
116
|
-
@failure = Opticon::Failure::ContentTestFailure.new(uri, condition,
|
122
|
+
@failure = Opticon::Failure::ContentTestFailure.new(uri, condition, r)
|
117
123
|
end
|
118
124
|
|
119
125
|
result
|
data/lib/opticon/version.rb
CHANGED
data/lib/opticon.rb
CHANGED
@@ -13,7 +13,16 @@ module Opticon
|
|
13
13
|
end
|
14
14
|
module_function :default_notifiers, 'default_notifiers='
|
15
15
|
|
16
|
+
@@default_timeout = 3
|
17
|
+
def default_timeout
|
18
|
+
@@default_timeout
|
19
|
+
end
|
20
|
+
def default_timeout=(timeout)
|
21
|
+
@@default_timeout = timeout
|
22
|
+
end
|
23
|
+
module_function :default_timeout, 'default_timeout='
|
24
|
+
|
16
25
|
end
|
17
26
|
|
18
|
-
require 'opticon/service'
|
19
|
-
require 'opticon/notifier'
|
27
|
+
require File.dirname(File.expand_path(__FILE__))+'/opticon/service'
|
28
|
+
require File.dirname(File.expand_path(__FILE__))+'/opticon/notifier'
|
data/test/opticon/tester_test.rb
CHANGED
@@ -27,7 +27,7 @@ class Opticon::HTTPTest < Test::Unit::TestCase
|
|
27
27
|
|
28
28
|
def test_response_code_tester_cant_connect
|
29
29
|
tester = Opticon::Tester::ResponseCodeTester.new
|
30
|
-
tester.uri = "http://there.is.no.such.server.foobarblah/test"
|
30
|
+
tester.uri = "http://there.is.no.such.server.foobarblah:1234/test"
|
31
31
|
|
32
32
|
assert !tester.run(:success)
|
33
33
|
assert_kind_of Opticon::Failure::ConnectionFailure, tester.failure
|
metadata
CHANGED
@@ -1,38 +1,45 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
|
-
rubygems_version: 0.9.2
|
3
|
-
specification_version: 1
|
4
2
|
name: opticon
|
5
3
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.0.
|
7
|
-
date: 2007-11-15 00:00:00 -05:00
|
8
|
-
summary: Peace of mind through automated monitoring of your HTTP services.
|
9
|
-
require_paths:
|
10
|
-
- lib
|
11
|
-
email: matt [at] roughest.net
|
12
|
-
homepage: http://opticon.rubyforge.org
|
13
|
-
rubyforge_project: opticon
|
14
|
-
description: Peace of mind through automated monitoring of your HTTP services.
|
15
|
-
autorequire:
|
16
|
-
default_executable:
|
17
|
-
bindir: bin
|
18
|
-
has_rdoc: true
|
19
|
-
required_ruby_version: !ruby/object:Gem::Version::Requirement
|
20
|
-
requirements:
|
21
|
-
- - ">"
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version: 0.0.0
|
24
|
-
version:
|
4
|
+
version: 0.0.3
|
25
5
|
platform: ruby
|
26
|
-
signing_key:
|
27
|
-
cert_chain:
|
28
|
-
post_install_message:
|
29
6
|
authors:
|
30
7
|
- Matt Zukowski
|
31
|
-
|
32
|
-
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2008-04-02 00:00:00 -04:00
|
13
|
+
default_executable:
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: actionmailer
|
17
|
+
version_requirement:
|
18
|
+
version_requirements: !ruby/object:Gem::Requirement
|
19
|
+
requirements:
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: "0"
|
23
|
+
version:
|
24
|
+
description: Peace of mind through automated monitoring of your HTTP services.
|
25
|
+
email: matt [at] roughest.net
|
26
|
+
executables: []
|
27
|
+
|
28
|
+
extensions: []
|
29
|
+
|
30
|
+
extra_rdoc_files:
|
31
|
+
- CHANGELOG.txt
|
32
|
+
- History.txt
|
33
|
+
- Manifest.txt
|
33
34
|
- README.txt
|
35
|
+
files:
|
36
|
+
- .loadpath
|
37
|
+
- .project
|
34
38
|
- CHANGELOG.txt
|
39
|
+
- History.txt
|
35
40
|
- Manifest.txt
|
41
|
+
- README.txt
|
42
|
+
- Rakefile
|
36
43
|
- examples/sample.rb
|
37
44
|
- lib/opticon.rb
|
38
45
|
- lib/opticon/failure.rb
|
@@ -52,30 +59,37 @@ files:
|
|
52
59
|
- test/opticon/tester_test.rb
|
53
60
|
- test/opticon_test.rb
|
54
61
|
- test/test_helper.rb
|
62
|
+
has_rdoc: true
|
63
|
+
homepage: http://opticon.rubyforge.org
|
64
|
+
post_install_message:
|
65
|
+
rdoc_options:
|
66
|
+
- --main
|
67
|
+
- README.txt
|
68
|
+
require_paths:
|
69
|
+
- lib
|
70
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - ">="
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: "0"
|
75
|
+
version:
|
76
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
77
|
+
requirements:
|
78
|
+
- - ">="
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
version: "0"
|
81
|
+
version:
|
82
|
+
requirements: []
|
83
|
+
|
84
|
+
rubyforge_project: opticon
|
85
|
+
rubygems_version: 1.0.1
|
86
|
+
signing_key:
|
87
|
+
specification_version: 2
|
88
|
+
summary: Peace of mind through automated monitoring of your HTTP services.
|
55
89
|
test_files:
|
56
90
|
- test/opticon_test.rb
|
57
|
-
- test/opticon/service_test.rb
|
58
|
-
- test/opticon/tester_test.rb
|
59
91
|
- test/opticon/mailer_test.rb
|
60
|
-
- test/opticon/email_notifier_test.rb
|
61
92
|
- test/opticon/http_test.rb
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
executables: []
|
67
|
-
|
68
|
-
extensions: []
|
69
|
-
|
70
|
-
requirements: []
|
71
|
-
|
72
|
-
dependencies:
|
73
|
-
- !ruby/object:Gem::Dependency
|
74
|
-
name: actionmailer
|
75
|
-
version_requirement:
|
76
|
-
version_requirements: !ruby/object:Gem::Version::Requirement
|
77
|
-
requirements:
|
78
|
-
- - ">"
|
79
|
-
- !ruby/object:Gem::Version
|
80
|
-
version: 0.0.0
|
81
|
-
version:
|
93
|
+
- test/opticon/tester_test.rb
|
94
|
+
- test/opticon/email_notifier_test.rb
|
95
|
+
- test/opticon/service_test.rb
|