is_it_working-cbeer 1.0.11
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/.gitignore +2 -0
- data/Gemfile +3 -0
- data/License.txt +674 -0
- data/README.rdoc +75 -0
- data/Rakefile +17 -0
- data/VERSION +1 -0
- data/is_it_working.gemspec +23 -0
- data/lib/is_it_working/checks/action_mailer_check.rb +25 -0
- data/lib/is_it_working/checks/active_record_check.rb +28 -0
- data/lib/is_it_working/checks/dalli_check.rb +48 -0
- data/lib/is_it_working/checks/directory_check.rb +44 -0
- data/lib/is_it_working/checks/memcache_check.rb +46 -0
- data/lib/is_it_working/checks/ping_check.rb +53 -0
- data/lib/is_it_working/checks/url_check.rb +81 -0
- data/lib/is_it_working/filter.rb +55 -0
- data/lib/is_it_working/handler.rb +153 -0
- data/lib/is_it_working/status.rb +62 -0
- data/lib/is_it_working.rb +18 -0
- data/spec/action_mailer_check_spec.rb +51 -0
- data/spec/active_record_check_spec.rb +51 -0
- data/spec/dalli_check_spec.rb +53 -0
- data/spec/directory_check_spec.rb +70 -0
- data/spec/filter_spec.rb +46 -0
- data/spec/handler_spec.rb +140 -0
- data/spec/memecache_check_spec.rb +51 -0
- data/spec/ping_check_spec.rb +47 -0
- data/spec/spec_helper.rb +11 -0
- data/spec/status_spec.rb +54 -0
- data/spec/url_check_spec.rb +144 -0
- metadata +180 -0
@@ -0,0 +1,144 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'webmock/rspec'
|
3
|
+
|
4
|
+
describe IsItWorking::UrlCheck do
|
5
|
+
|
6
|
+
before :all do
|
7
|
+
WebMock.disable_net_connect!
|
8
|
+
end
|
9
|
+
|
10
|
+
after :all do
|
11
|
+
WebMock.allow_net_connect!
|
12
|
+
end
|
13
|
+
|
14
|
+
after :each do
|
15
|
+
WebMock.reset!
|
16
|
+
end
|
17
|
+
|
18
|
+
let(:status){ IsItWorking::Status.new(:url) }
|
19
|
+
|
20
|
+
it "should succeed if the URL returns a 2xx response" do
|
21
|
+
stub_request(:get, "example.com/test?a=1").to_return(:status => [200, "Success"])
|
22
|
+
check = IsItWorking::UrlCheck.new(:get => "http://example.com/test?a=1")
|
23
|
+
check.call(status)
|
24
|
+
status.should be_success
|
25
|
+
status.messages.first.message.should == "GET http://example.com/test?a=1 responded with response '200 Success'"
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should fail if the URL returns a 1xx response" do
|
29
|
+
stub_request(:get, "example.com/test?a=1").to_return(:status => [150, "Continue"])
|
30
|
+
check = IsItWorking::UrlCheck.new(:get => "http://example.com/test?a=1")
|
31
|
+
check.call(status)
|
32
|
+
status.should_not be_success
|
33
|
+
status.messages.first.message.should == "GET http://example.com/test?a=1 failed with response '150 Continue'"
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should fail if the URL returns a 3xx response" do
|
37
|
+
stub_request(:get, "example.com/test?a=1").to_return(:status => [302, "Found"])
|
38
|
+
check = IsItWorking::UrlCheck.new(:get => "http://example.com/test?a=1")
|
39
|
+
check.call(status)
|
40
|
+
status.should_not be_success
|
41
|
+
status.messages.first.message.should == "GET http://example.com/test?a=1 failed with response '302 Found'"
|
42
|
+
end
|
43
|
+
|
44
|
+
it "should fail if the URL returns a 4xx response" do
|
45
|
+
stub_request(:get, "example.com/test?a=1").to_return(:status => [404, "Not Found"])
|
46
|
+
check = IsItWorking::UrlCheck.new(:get => "http://example.com/test?a=1")
|
47
|
+
check.call(status)
|
48
|
+
status.should_not be_success
|
49
|
+
status.messages.first.message.should == "GET http://example.com/test?a=1 failed with response '404 Not Found'"
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should fail if the URL returns a 5xx response" do
|
53
|
+
stub_request(:get, "example.com/test?a=1").to_return(:status => [503, "Service Unavailable"])
|
54
|
+
check = IsItWorking::UrlCheck.new(:get => "http://example.com/test?a=1")
|
55
|
+
check.call(status)
|
56
|
+
status.should_not be_success
|
57
|
+
status.messages.first.message.should == "GET http://example.com/test?a=1 failed with response '503 Service Unavailable'"
|
58
|
+
end
|
59
|
+
|
60
|
+
it "should send basic authentication" do
|
61
|
+
stub_request(:get, "user:passwd@example.com/test?a=1").to_return(:status => [200, "Success"])
|
62
|
+
check = IsItWorking::UrlCheck.new(:get => "http://example.com/test?a=1", :username => "user", :password => "passwd")
|
63
|
+
check.call(status)
|
64
|
+
status.should be_success
|
65
|
+
status.messages.first.message.should == "GET http://example.com/test?a=1 responded with response '200 Success'"
|
66
|
+
end
|
67
|
+
|
68
|
+
it "should send headers with the request" do
|
69
|
+
stub_request(:get, "example.com/test?a=1").to_return(:status => [200, "Success"])
|
70
|
+
check = IsItWorking::UrlCheck.new(:get => "http://example.com/test?a=1", :headers => {"Accept-Encoding" => "gzip"})
|
71
|
+
check.call(status)
|
72
|
+
status.should be_success
|
73
|
+
status.messages.first.message.should == "GET http://example.com/test?a=1 responded with response '200 Success'"
|
74
|
+
WebMock.should have_requested(:get, "example.com/test?a=1").with(:headers => {"Accept-Encoding" => "gzip"})
|
75
|
+
end
|
76
|
+
|
77
|
+
it "should use SSL connection if URL is HTTPS" do
|
78
|
+
http = Net::HTTP.new('localhost')
|
79
|
+
Net::HTTP.should_receive(:new).with('localhost', 443).and_return(http)
|
80
|
+
request = Net::HTTP::Get.new("/test?a=1")
|
81
|
+
Net::HTTP::Get.should_receive(:new).with("/test?a=1", {}).and_return(request)
|
82
|
+
http.should_receive(:start).and_yield
|
83
|
+
http.should_receive(:request).with(request).and_return(Net::HTTPSuccess.new(nil, "200", "Success"))
|
84
|
+
|
85
|
+
check = IsItWorking::UrlCheck.new(:get => "https://localhost/test?a=1")
|
86
|
+
check.call(status)
|
87
|
+
status.should be_success
|
88
|
+
status.messages.first.message.should == "GET https://localhost/test?a=1 responded with response '200 Success'"
|
89
|
+
http.use_ssl?.should == true
|
90
|
+
http.verify_mode.should == OpenSSL::SSL::VERIFY_PEER
|
91
|
+
end
|
92
|
+
|
93
|
+
it "should be able to alias the URL in the output" do
|
94
|
+
stub_request(:get, "example.com/test").to_return(:status => [200, "Success"])
|
95
|
+
check = IsItWorking::UrlCheck.new(:get => "http://example.com/test", :alias => "service ping URL")
|
96
|
+
check.call(status)
|
97
|
+
status.should be_success
|
98
|
+
status.messages.first.message.should == "GET service ping URL responded with response '200 Success'"
|
99
|
+
end
|
100
|
+
|
101
|
+
it "should try to get the URL through a proxy" do
|
102
|
+
http = Net::HTTP.new('localhost')
|
103
|
+
Net::HTTP.should_receive(:Proxy).with('localhost', 8080, "user", "passwd").and_return(Net::HTTP)
|
104
|
+
Net::HTTP.should_receive(:new).with('localhost', 80).and_return(http)
|
105
|
+
request = Net::HTTP::Get.new("/test?a=1")
|
106
|
+
Net::HTTP::Get.should_receive(:new).with("/test?a=1", {}).and_return(request)
|
107
|
+
http.should_receive(:start).and_yield
|
108
|
+
http.should_receive(:request).with(request).and_return(Net::HTTPSuccess.new(nil, "200", "Success"))
|
109
|
+
|
110
|
+
check = IsItWorking::UrlCheck.new(:get => "http://localhost/test?a=1", :proxy => {:host => "localhost", :port => 8080, :username => "user", :password => "passwd"})
|
111
|
+
check.call(status)
|
112
|
+
status.should be_success
|
113
|
+
status.messages.first.message.should == "GET http://localhost/test?a=1 responded with response '200 Success'"
|
114
|
+
end
|
115
|
+
|
116
|
+
it "should set open and read timeouts" do
|
117
|
+
http = Net::HTTP.new('localhost')
|
118
|
+
Net::HTTP.should_receive(:new).with('localhost', 80).and_return(http)
|
119
|
+
request = Net::HTTP::Get.new("/test?a=1")
|
120
|
+
Net::HTTP::Get.should_receive(:new).with("/test?a=1", {}).and_return(request)
|
121
|
+
http.should_receive(:start).and_yield
|
122
|
+
http.should_receive(:request).with(request).and_return(Net::HTTPSuccess.new(nil, "200", "Success"))
|
123
|
+
|
124
|
+
check = IsItWorking::UrlCheck.new(:get => "http://localhost/test?a=1", :open_timeout => 1, :read_timeout => 2)
|
125
|
+
check.call(status)
|
126
|
+
status.should be_success
|
127
|
+
status.messages.first.message.should == "GET http://localhost/test?a=1 responded with response '200 Success'"
|
128
|
+
http.open_timeout.should == 1
|
129
|
+
http.read_timeout.should == 2
|
130
|
+
end
|
131
|
+
|
132
|
+
it "should fail on a timeout" do
|
133
|
+
http = Net::HTTP.new('localhost')
|
134
|
+
Net::HTTP.should_receive(:new).with('localhost', 80).and_return(http)
|
135
|
+
request = Net::HTTP::Get.new("/test?a=1")
|
136
|
+
Net::HTTP::Get.should_receive(:new).with("/test?a=1", {}).and_return(request)
|
137
|
+
http.should_receive(:start).and_raise(TimeoutError)
|
138
|
+
|
139
|
+
check = IsItWorking::UrlCheck.new(:get => "http://localhost/test?a=1", :open_timeout => 1, :read_timeout => 2)
|
140
|
+
check.call(status)
|
141
|
+
status.should_not be_success
|
142
|
+
status.messages.first.message.should match(/GET http:\/\/localhost\/test\?a=1 timed out after .* seconds/)
|
143
|
+
end
|
144
|
+
end
|
metadata
ADDED
@@ -0,0 +1,180 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: is_it_working-cbeer
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.11
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Brian Durand
|
9
|
+
- Chris Beer
|
10
|
+
autorequire:
|
11
|
+
bindir: bin
|
12
|
+
cert_chain: []
|
13
|
+
date: 2012-06-15 00:00:00.000000000 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: rspec
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
|
+
none: false
|
19
|
+
requirements:
|
20
|
+
- - ! '>='
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '2.0'
|
23
|
+
type: :development
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
27
|
+
requirements:
|
28
|
+
- - ! '>='
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
version: '2.0'
|
31
|
+
- !ruby/object:Gem::Dependency
|
32
|
+
name: webmock
|
33
|
+
requirement: !ruby/object:Gem::Requirement
|
34
|
+
none: false
|
35
|
+
requirements:
|
36
|
+
- - ! '>='
|
37
|
+
- !ruby/object:Gem::Version
|
38
|
+
version: 1.6.0
|
39
|
+
type: :development
|
40
|
+
prerelease: false
|
41
|
+
version_requirements: !ruby/object:Gem::Requirement
|
42
|
+
none: false
|
43
|
+
requirements:
|
44
|
+
- - ! '>='
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: 1.6.0
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: memcache-client
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
type: :development
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: !ruby/object:Gem::Requirement
|
58
|
+
none: false
|
59
|
+
requirements:
|
60
|
+
- - ! '>='
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0'
|
63
|
+
- !ruby/object:Gem::Dependency
|
64
|
+
name: dalli
|
65
|
+
requirement: !ruby/object:Gem::Requirement
|
66
|
+
none: false
|
67
|
+
requirements:
|
68
|
+
- - ! '>='
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: '0'
|
71
|
+
type: :development
|
72
|
+
prerelease: false
|
73
|
+
version_requirements: !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
75
|
+
requirements:
|
76
|
+
- - ! '>='
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: '0'
|
79
|
+
- !ruby/object:Gem::Dependency
|
80
|
+
name: rails
|
81
|
+
requirement: !ruby/object:Gem::Requirement
|
82
|
+
none: false
|
83
|
+
requirements:
|
84
|
+
- - ! '>='
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
version: '0'
|
87
|
+
type: :development
|
88
|
+
prerelease: false
|
89
|
+
version_requirements: !ruby/object:Gem::Requirement
|
90
|
+
none: false
|
91
|
+
requirements:
|
92
|
+
- - ! '>='
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '0'
|
95
|
+
description: Rack handler for monitoring several parts of a web application so one
|
96
|
+
request can determine which system or dependencies are down.
|
97
|
+
email:
|
98
|
+
- mdobrota@tribune.com
|
99
|
+
- ddpr@tribune.com
|
100
|
+
- chris@cbeer.info
|
101
|
+
executables: []
|
102
|
+
extensions: []
|
103
|
+
extra_rdoc_files:
|
104
|
+
- README.rdoc
|
105
|
+
files:
|
106
|
+
- .gitignore
|
107
|
+
- Gemfile
|
108
|
+
- License.txt
|
109
|
+
- README.rdoc
|
110
|
+
- Rakefile
|
111
|
+
- VERSION
|
112
|
+
- is_it_working.gemspec
|
113
|
+
- lib/is_it_working.rb
|
114
|
+
- lib/is_it_working/checks/action_mailer_check.rb
|
115
|
+
- lib/is_it_working/checks/active_record_check.rb
|
116
|
+
- lib/is_it_working/checks/dalli_check.rb
|
117
|
+
- lib/is_it_working/checks/directory_check.rb
|
118
|
+
- lib/is_it_working/checks/memcache_check.rb
|
119
|
+
- lib/is_it_working/checks/ping_check.rb
|
120
|
+
- lib/is_it_working/checks/url_check.rb
|
121
|
+
- lib/is_it_working/filter.rb
|
122
|
+
- lib/is_it_working/handler.rb
|
123
|
+
- lib/is_it_working/status.rb
|
124
|
+
- spec/action_mailer_check_spec.rb
|
125
|
+
- spec/active_record_check_spec.rb
|
126
|
+
- spec/dalli_check_spec.rb
|
127
|
+
- spec/directory_check_spec.rb
|
128
|
+
- spec/filter_spec.rb
|
129
|
+
- spec/handler_spec.rb
|
130
|
+
- spec/memecache_check_spec.rb
|
131
|
+
- spec/ping_check_spec.rb
|
132
|
+
- spec/spec_helper.rb
|
133
|
+
- spec/status_spec.rb
|
134
|
+
- spec/url_check_spec.rb
|
135
|
+
homepage:
|
136
|
+
licenses: []
|
137
|
+
post_install_message:
|
138
|
+
rdoc_options:
|
139
|
+
- --line-numbers
|
140
|
+
- --inline-source
|
141
|
+
- --main
|
142
|
+
- README.rdoc
|
143
|
+
require_paths:
|
144
|
+
- lib
|
145
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
146
|
+
none: false
|
147
|
+
requirements:
|
148
|
+
- - ! '>='
|
149
|
+
- !ruby/object:Gem::Version
|
150
|
+
version: '0'
|
151
|
+
segments:
|
152
|
+
- 0
|
153
|
+
hash: -2548203515793015154
|
154
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
155
|
+
none: false
|
156
|
+
requirements:
|
157
|
+
- - ! '>='
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0'
|
160
|
+
segments:
|
161
|
+
- 0
|
162
|
+
hash: -2548203515793015154
|
163
|
+
requirements: []
|
164
|
+
rubyforge_project:
|
165
|
+
rubygems_version: 1.8.24
|
166
|
+
signing_key:
|
167
|
+
specification_version: 3
|
168
|
+
summary: Rack handler for monitoring several parts of a web application.
|
169
|
+
test_files:
|
170
|
+
- spec/action_mailer_check_spec.rb
|
171
|
+
- spec/active_record_check_spec.rb
|
172
|
+
- spec/dalli_check_spec.rb
|
173
|
+
- spec/directory_check_spec.rb
|
174
|
+
- spec/filter_spec.rb
|
175
|
+
- spec/handler_spec.rb
|
176
|
+
- spec/memecache_check_spec.rb
|
177
|
+
- spec/ping_check_spec.rb
|
178
|
+
- spec/spec_helper.rb
|
179
|
+
- spec/status_spec.rb
|
180
|
+
- spec/url_check_spec.rb
|