health_check 1.1.2 → 1.2.0
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 +5 -0
- data/.travis.yml +52 -41
- data/CHANGELOG +4 -0
- data/README.rdoc +81 -18
- data/config/routes.rb +4 -2
- data/health_check.gemspec +1 -1
- data/lib/health_check.rb +28 -0
- data/lib/health_check/add_23_routes.rb +12 -7
- data/lib/health_check/health_check_controller.rb +16 -42
- data/lib/health_check/utils.rb +51 -27
- data/lib/health_check/version.rb +1 -1
- data/test/init_variables +60 -0
- data/{rails2_3.gemfile → test/rails_2.3.gemfile} +8 -1
- data/{rails3_0.gemfile → test/rails_3.0.gemfile} +0 -1
- data/{rails3_1.gemfile → test/rails_3.1.gemfile} +0 -1
- data/{rails3_2.gemfile → test/rails_3.2.gemfile} +0 -1
- data/{rails_edge.gemfile → test/rails_4.0-beta.gemfile} +4 -5
- data/test/setup_railsapp +258 -0
- data/test/test_with_railsapp +100 -177
- data/test/testurl +39 -12
- metadata +25 -18
- data/rails1_2.gemfile +0 -12
data/test/test_with_railsapp
CHANGED
@@ -3,56 +3,35 @@
|
|
3
3
|
# Any failure causes exit
|
4
4
|
set -e
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
exit 2
|
27
|
-
fi
|
6
|
+
case "$1" in
|
7
|
+
redo)
|
8
|
+
. test/init_variables
|
9
|
+
cd $railsapp
|
10
|
+
echo Dropping database ...
|
11
|
+
$rake db:drop
|
12
|
+
echo Removing migrations ...
|
13
|
+
rm -f db/migrate/* db/schema.rb
|
14
|
+
case `ruby -e 'puts JRUBY_VERSION' 2> /dev/null` in
|
15
|
+
[0-9]*)
|
16
|
+
echo 'Jruby requires the database to be created before the server is started: running rake db:migrate'
|
17
|
+
$rake db:migrate
|
18
|
+
;;
|
19
|
+
esac
|
20
|
+
actual_rails_version=`$rails -v`
|
21
|
+
;;
|
22
|
+
*)
|
23
|
+
. test/setup_railsapp
|
24
|
+
;;
|
25
|
+
esac
|
28
26
|
|
29
|
-
|
27
|
+
cd $railsapp
|
28
|
+
date > $custom_file
|
30
29
|
|
31
30
|
testurl="$base_dir/test/testurl"
|
32
31
|
fake_smtp_server="$base_dir/test/fake_smtp_server"
|
33
32
|
|
34
|
-
test_dir=`pwd`/tmp
|
35
|
-
rm -rf tmp/Gemfile* tmp/railsapp tmp/bin tmp/gems
|
36
|
-
mkdir -p tmp/gems
|
37
|
-
|
38
|
-
[ -d lib/health_check ] || exec echo test MUST be executed in the base of the health_check gem/clone of git repository
|
39
|
-
|
40
|
-
echo Installing health_check as a gem into tmp/gems
|
41
|
-
env GEM_HOME=$test_dir/gems rake install
|
42
|
-
|
43
|
-
export GEM_PATH="$test_dir/gems:`gem environment gempath`"
|
44
|
-
echo Set GEM_PATH=$GEM_PATH
|
45
|
-
|
46
|
-
echo Gems in tmp/gems:
|
47
|
-
ls tmp/gems
|
48
|
-
|
49
|
-
echo GEM LIST
|
50
|
-
gem list
|
51
|
-
|
52
|
-
echo Environment:
|
53
|
-
env | egrep 'TRAVIS|RAILS|RUBY|_ENV|GEM|BUNDLE'
|
54
|
-
|
55
33
|
server_pid=''
|
34
|
+
fake_smtp_pid=''
|
56
35
|
|
57
36
|
finish()
|
58
37
|
{
|
@@ -60,24 +39,31 @@ finish()
|
|
60
39
|
echo ========================================================
|
61
40
|
echo TEST ${1:-FAILED}
|
62
41
|
echo ========================================================
|
63
|
-
echo Result of: ls -lR $
|
64
|
-
ls -lR $
|
42
|
+
echo Result of: ls -lR $railsapp/log $railsapp/db
|
43
|
+
ls -lR $railsapp/log $railsapp/db
|
65
44
|
|
66
|
-
if [ -s $
|
45
|
+
if [ -s $railsapp/log/test.log ]
|
67
46
|
then
|
68
47
|
echo ========================================================
|
69
|
-
echo Last
|
70
|
-
tail -
|
48
|
+
echo Last 50 lines of test log
|
49
|
+
tail -50 $railsapp/log/test.log
|
71
50
|
fi
|
72
51
|
|
52
|
+
case "$fake_smtp_pid" in
|
53
|
+
[0-9]*)
|
54
|
+
echo ========================================================
|
55
|
+
echo "Killing fake smtp server [pid: $fake_smtp_pid]"
|
56
|
+
kill -9 $fake_smtp_pid
|
57
|
+
;;
|
58
|
+
esac
|
73
59
|
case "$server_pid" in
|
74
60
|
[0-9]*)
|
75
61
|
echo ========================================================
|
76
62
|
echo "Killing rails server [pid: $server_pid]"
|
77
63
|
kill -9 $server_pid
|
78
|
-
wait
|
79
64
|
;;
|
80
65
|
esac
|
66
|
+
wait
|
81
67
|
trap "" 0
|
82
68
|
echo ========================================================
|
83
69
|
echo TEST ${1:-FAILED}
|
@@ -87,126 +73,24 @@ finish()
|
|
87
73
|
|
88
74
|
trap "finish FAILED 1" 0
|
89
75
|
|
90
|
-
rails='rails'
|
91
|
-
if [ -x bin/rails ]
|
92
|
-
then
|
93
|
-
rails="`pwd`/bin/rails"
|
94
|
-
echo "Using binstub: $rails for rails command"
|
95
|
-
fi
|
96
|
-
rake='rake'
|
97
|
-
if [ -x bin/rake ]
|
98
|
-
then
|
99
|
-
rake="`pwd`/bin/rake"
|
100
|
-
echo "Using binstub: $rake for rake command"
|
101
|
-
fi
|
102
|
-
|
103
|
-
cd $test_dir
|
104
|
-
|
105
|
-
actual_rails_version=`$rails -v`
|
106
|
-
|
107
|
-
case `ruby -e 'puts JRUBY_VERSION' 2> /dev/null` in
|
108
|
-
[0-9]*)
|
109
|
-
db=jdbcsqlite3
|
110
|
-
# Appears to need a bit extra time
|
111
|
-
;;
|
112
|
-
*)
|
113
|
-
db=sqlite3
|
114
|
-
;;
|
115
|
-
esac
|
116
|
-
|
117
|
-
echo "Creating $actual_rails_version app in $test_dir/railsapp using adapter $db"
|
118
|
-
case "$actual_rails_version" in
|
119
|
-
*' '[12].*)
|
120
|
-
$rails railsapp -d $db
|
121
|
-
;;
|
122
|
-
*' '[34].*)
|
123
|
-
$rails new railsapp -d $db
|
124
|
-
;;
|
125
|
-
*)
|
126
|
-
echo "Unknown rails version"
|
127
|
-
;;
|
128
|
-
esac
|
129
|
-
|
130
|
-
cd railsapp
|
131
|
-
|
132
|
-
echo "Changed current directory to railsapp root: `pwd`"
|
133
|
-
|
134
|
-
echo "Fixing rdoc require in Rakefile if needed"
|
135
|
-
ruby -p -i.bak -e '$_.gsub!(/rake.rdoctask/, "rdoc/task")' Rakefile
|
136
|
-
|
137
|
-
echo "Configuring mailer to point to fake_smtp_server port 3555"
|
138
|
-
cat >> config/environment.rb <<'!EOF!'
|
139
|
-
|
140
|
-
ActionMailer::Base.delivery_method = :smtp
|
141
|
-
ActionMailer::Base.smtp_settings = { :address => "localhost", :port => 3555 }
|
142
|
-
|
143
|
-
!EOF!
|
144
|
-
|
145
|
-
echo "Last ten lines of config/environment.rb:"
|
146
|
-
tail -10 config/environment.rb
|
147
|
-
echo
|
148
|
-
|
149
|
-
if [ -s Gemfile ]
|
150
|
-
then
|
151
|
-
echo Adding health_check as gem to Gemfile...
|
152
|
-
echo "gem 'health_check', :path => '$base_dir'" >> Gemfile
|
153
|
-
|
154
|
-
case "$BUNDLE_GEMFILE" in
|
155
|
-
?*)
|
156
|
-
echo Unsetting BUNDLE_GEMFILE '(so Gemfile for rails application will be used)'
|
157
|
-
unset BUNDLE_GEMFILE
|
158
|
-
;;
|
159
|
-
esac
|
160
|
-
echo
|
161
|
-
echo Gemfile contents:
|
162
|
-
cat Gemfile
|
163
|
-
echo
|
164
|
-
echo running bundle install --binstubs
|
165
|
-
bundle install --binstubs
|
166
|
-
echo "Using binstubs in `pwd`/bin for rails and rake commands"
|
167
|
-
rails="`pwd`/bin/rails"
|
168
|
-
rake="`pwd`/bin/rake"
|
169
|
-
# Fix for rvm, otherwise bundle run from rails create fails
|
170
|
-
export PATH="`pwd`/bin:$PATH"
|
171
|
-
else
|
172
|
-
dest=`pwd`/vendor/plugins/health_check
|
173
|
-
echo Installing health_check as plugin in $dest ...
|
174
|
-
mkdir -p $dest
|
175
|
-
(
|
176
|
-
cd $base_dir
|
177
|
-
|
178
|
-
find . | egrep -v '/tmp|/\.git|\.gem$' | cpio -pdl $dest
|
179
|
-
|
180
|
-
cd $dest
|
181
|
-
|
182
|
-
echo Files installed as plugin:
|
183
|
-
find . -type f
|
184
|
-
echo
|
185
|
-
)
|
186
|
-
fi
|
187
|
-
|
188
|
-
echo Setting RAILS_ENV=test RACK_ENV=test
|
189
|
-
export RAILS_ENV=test RACK_ENV=test
|
190
|
-
|
191
|
-
case $db in
|
192
|
-
jdbcsqlite3)
|
193
|
-
echo
|
194
|
-
echo 'Jruby requires the dastabase to be created before the server is started: running rake db:migrate'
|
195
|
-
$rake db:migrate
|
196
|
-
echo
|
197
|
-
;;
|
198
|
-
esac
|
199
|
-
|
200
76
|
port=3456
|
201
|
-
echo Starting server on port $port ...
|
202
77
|
|
203
78
|
if [ -x script/server ]
|
204
79
|
then
|
205
|
-
|
80
|
+
if [ -f Gemfile ]
|
81
|
+
then
|
82
|
+
echo Starting server on port $port using bundle exec ./script/server ...
|
83
|
+
bundle exec ./script/server webrick -p $port &
|
84
|
+
else
|
85
|
+
echo Starting server on port $port using ./script/server ...
|
86
|
+
./script/server webrick -p $port &
|
87
|
+
fi
|
206
88
|
else
|
89
|
+
echo Starting server on port $port using $rails s ...
|
207
90
|
$rails s webrick -p $port &
|
208
91
|
fi
|
209
92
|
server_pid=$!
|
93
|
+
sleep 17
|
210
94
|
|
211
95
|
echo STATIC-FILE > public/static.txt
|
212
96
|
|
@@ -215,80 +99,119 @@ host=http://localhost:${port}
|
|
215
99
|
# get a static file
|
216
100
|
echo
|
217
101
|
echo 'TESTING can get a static file ...'
|
218
|
-
$testurl ${host}/static.txt STATIC-FILE
|
102
|
+
$testurl ${host}/static.txt 200 text/plain STATIC-FILE
|
219
103
|
echo
|
220
104
|
|
221
105
|
echo 'TESTING health_check/migration should pass with no database migrations ...'
|
222
106
|
mkdir -p db/migrate
|
223
107
|
ls db/migrate
|
224
|
-
$testurl ${host}/health_check/migration success
|
108
|
+
$testurl ${host}/health_check/migration 200 text/plain $success
|
225
109
|
echo
|
226
110
|
|
227
111
|
echo 'TESTING health_check/migration should fail without initial database migration ...'
|
228
112
|
cp $base_dir/test/migrate/nine/* db/migrate
|
229
113
|
ls db/migrate
|
230
|
-
$testurl ${host}/health_check/migration failed
|
114
|
+
$testurl ${host}/health_check/migration 550 text/plain failed
|
231
115
|
echo
|
232
116
|
|
233
117
|
echo 'TESTING health_check/database should pass without initial database migration (since it ignores the difference) ...'
|
234
|
-
$testurl ${host}/health_check/database success
|
118
|
+
$testurl ${host}/health_check/database 200 text/plain $success
|
235
119
|
echo
|
236
120
|
|
237
121
|
echo 'TESTING health_check/site should pass ...'
|
238
|
-
$testurl ${host}/health_check/site success
|
122
|
+
$testurl ${host}/health_check/site 200 text/plain $success
|
239
123
|
echo
|
240
124
|
|
241
125
|
echo 'TESTING health_check/migration should pass after initial database migration ...'
|
242
126
|
$rake db:migrate
|
243
|
-
$testurl ${host}/health_check/migration success
|
127
|
+
$testurl ${host}/health_check/migration 200 text/plain $success
|
244
128
|
echo
|
245
129
|
|
246
130
|
echo 'TESTING health_check/migration should fail without all migrations ...'
|
247
131
|
cp $base_dir/test/migrate/twelve/* db/migrate
|
248
132
|
ls db/migrate
|
249
|
-
$testurl ${host}/health_check/migration failed
|
133
|
+
$testurl ${host}/health_check/migration 550 text/plain failed
|
250
134
|
echo
|
251
135
|
|
252
136
|
echo 'TESTING health_check/migration should pass after both database migrations ...'
|
253
137
|
$rake db:migrate
|
254
|
-
$testurl ${host}/health_check/migration success
|
138
|
+
$testurl ${host}/health_check/migration 200 text/plain $success
|
255
139
|
echo
|
256
140
|
|
257
141
|
echo 'TESTING health_check/migration should pass after both database migrations ...'
|
258
142
|
$rake db:migrate
|
259
|
-
$testurl ${host}/health_check/migration success
|
143
|
+
$testurl ${host}/health_check/migration 200 text/plain $success
|
260
144
|
echo
|
261
145
|
|
262
146
|
echo 'TESTING health_check/email should fail without smtp available ...'
|
263
|
-
$testurl ${host}/health_check/email failed
|
147
|
+
$testurl ${host}/health_check/email 550 text/plain failed
|
264
148
|
echo
|
265
149
|
|
266
150
|
echo 'TESTING health_check/email should pass with smtp available ...'
|
267
151
|
$fake_smtp_server &
|
152
|
+
fake_smtp_pid=$!
|
268
153
|
sleep 5
|
269
|
-
$testurl ${host}/health_check/email success
|
154
|
+
$testurl ${host}/health_check/email 200 text/plain $success
|
270
155
|
echo
|
271
156
|
|
272
157
|
echo 'TESTING health_check (all) should fail without smtp available ...'
|
273
|
-
$testurl ${host}/health_check failed
|
158
|
+
$testurl ${host}/health_check 550 text/plain failed
|
274
159
|
echo
|
275
160
|
|
276
161
|
echo 'TESTING health_check/all should fail without smtp available ...'
|
277
|
-
$testurl ${host}/health_check failed
|
162
|
+
$testurl ${host}/health_check 550 text/plain failed
|
278
163
|
echo
|
279
164
|
|
165
|
+
kill -9 $fake_smtp_pid || echo fake_smtp_server had finished as expected
|
280
166
|
echo 'TESTING health_check (all) should pass with smtp available ...'
|
281
167
|
$fake_smtp_server &
|
168
|
+
fake_smtp_pid=$!
|
282
169
|
sleep 5
|
283
|
-
$testurl ${host}/health_check success
|
170
|
+
$testurl ${host}/health_check 200 text/plain $success
|
284
171
|
echo
|
285
172
|
|
173
|
+
kill -9 $fake_smtp_pid || echo fake_smtp_server had finished as expected
|
286
174
|
echo 'TESTING health_check/all should pass with smtp available ...'
|
287
175
|
$fake_smtp_server &
|
176
|
+
fake_smtp_pid=$!
|
288
177
|
sleep 5
|
289
|
-
$testurl ${host}/health_check/all success
|
178
|
+
$testurl ${host}/health_check/all 200 text/plain $success
|
179
|
+
echo
|
180
|
+
|
181
|
+
echo 'TESTING health_check/custom should pass ...'
|
182
|
+
$testurl ${host}/health_check/custom 200 text/plain $success
|
183
|
+
echo
|
184
|
+
|
185
|
+
echo 'TESTING health_check/custom.json should pass ...'
|
186
|
+
$testurl ${host}/health_check/custom.json 200 application/json '"healthy":true'
|
187
|
+
$testurl ${host}/health_check/custom.json 200 application/json "\"message\":\"$success\""
|
188
|
+
echo
|
189
|
+
|
190
|
+
echo 'TESTING health_check/custom.xml should pass ...'
|
191
|
+
$testurl ${host}/health_check/custom.xml 200 application/xml '<healthy type="boolean">true</healthy>'
|
192
|
+
$testurl ${host}/health_check/custom.xml 200 application/xml "<message>$success</message>"
|
193
|
+
echo
|
194
|
+
|
195
|
+
echo 'TESTING health_check/custom should fail when custom returns string ...'
|
196
|
+
rm -f $custom_file
|
197
|
+
$testurl ${host}/health_check/custom 550 text/plain failed
|
198
|
+
echo
|
199
|
+
|
200
|
+
echo 'TESTING health_check (all) should fail when custom check fails ...'
|
201
|
+
$testurl ${host}/health_check 550 text/plain "$custom_file is missing!"
|
202
|
+
echo
|
203
|
+
|
204
|
+
echo 'TESTING health_check.json (all) should fail when custom check fails ...'
|
205
|
+
$testurl ${host}/health_check.json 555 application/json '"healthy":false'
|
206
|
+
$testurl ${host}/health_check.json 555 application/json "$custom_file is missing!"
|
207
|
+
echo
|
208
|
+
|
209
|
+
echo 'TESTING health_check.xml (all) should fail when custom check fails ...'
|
210
|
+
$testurl ${host}/health_check.xml 555 application/xml '<healthy type="boolean">false</healthy>'
|
290
211
|
echo
|
291
212
|
|
213
|
+
date > $custom_file
|
214
|
+
|
292
215
|
finish PASSED 0
|
293
216
|
exit 0
|
294
217
|
|
data/test/testurl
CHANGED
@@ -3,31 +3,58 @@ require 'net/http'
|
|
3
3
|
require 'uri'
|
4
4
|
|
5
5
|
def open(url)
|
6
|
-
Net::HTTP.
|
6
|
+
Net::HTTP.get_response(URI.parse(url))
|
7
7
|
end
|
8
8
|
|
9
|
-
|
10
|
-
unless
|
9
|
+
response = open(ARGV[0]) rescue nil
|
10
|
+
unless response
|
11
11
|
i=0
|
12
12
|
print "waiting.."
|
13
|
-
while i < 120 and not
|
13
|
+
while i < 120 and not response
|
14
14
|
print "."
|
15
15
|
STDOUT.flush
|
16
16
|
i += 1
|
17
17
|
sleep(1)
|
18
|
-
|
18
|
+
response = open(ARGV[0]) rescue nil
|
19
19
|
end
|
20
|
-
|
20
|
+
unless response
|
21
|
+
puts "\nFAIL: timed out after waiting #{i} seconds"
|
22
|
+
exit 9
|
23
|
+
end
|
24
|
+
puts "\n got url content after waiting #{i} seconds"
|
21
25
|
end
|
22
26
|
|
23
|
-
|
27
|
+
page_content = response.body
|
28
|
+
|
29
|
+
puts " response code: #{response.code} #{response.message}"
|
30
|
+
puts " content_type: #{response.content_type}"
|
31
|
+
puts " body: #{page_content}"
|
32
|
+
|
24
33
|
if ARGV[1]
|
25
|
-
if
|
26
|
-
puts "PASS (
|
27
|
-
|
34
|
+
if response.code == ARGV[1]
|
35
|
+
puts "PASS (response code was #{ARGV[1]})"
|
36
|
+
else
|
37
|
+
puts "FAIL (response code was #{response.code}, expected #{ARGV[1]})"
|
38
|
+
exit 1
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
if ARGV[2]
|
43
|
+
if response.content_type == ARGV[2]
|
44
|
+
puts "PASS (content type was #{response.content_type})"
|
28
45
|
else
|
29
|
-
puts "FAIL (
|
46
|
+
puts "FAIL (content type was #{response.content_type}, expected #{ARGV[2]})"
|
30
47
|
exit 2
|
31
48
|
end
|
32
49
|
end
|
33
|
-
|
50
|
+
|
51
|
+
if ARGV[3]
|
52
|
+
if page_content.to_s.include? ARGV[3]
|
53
|
+
puts "PASS (found #{ARGV[3]})"
|
54
|
+
else
|
55
|
+
puts "FAIL (could not find #{ARGV[3]})"
|
56
|
+
exit 3
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
exit 0
|