forked from vinibaggio/outpost
-
Notifications
You must be signed in to change notification settings - Fork 0
/
more_complex_test.rb
96 lines (77 loc) · 2.94 KB
/
more_complex_test.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
require 'test_helper'
require 'outpost/scouts'
describe "using more complex application integration test" do
class ExamplePingAndHttp < Outpost::Application
using Outpost::Scouts::Http => 'master http server' do
options :host => 'localhost', :port => 9595, :path => '/'
report :up, :response_body => {:match => /Up/}
end
using Outpost::Scouts::Ping => 'load balancer' do
options :host => 'localhost'
report :up, :response_time => {:less_than => 500}
end
end
class ExampleOneFailingOnePassing < Outpost::Application
using Outpost::Scouts::Http => 'master http server' do
options :host => 'localhost', :port => 9595, :path => '/'
report :up, :response_body => {:match => /Up/}
end
using Outpost::Scouts::Ping => 'load balancer' do
options :host => 'localhost'
report :up, :response_time => {:less_than => 0}
end
end
class ExampleOneWarningOnePassing < Outpost::Application
using Outpost::Scouts::Http => 'master http server' do
options :host => 'localhost', :port => 9595, :path => '/'
report :up, :response_body => {:match => /Up/}
end
using Outpost::Scouts::Http => 'master http server' do
options :host => 'localhost', :port => 9595, :path => '/warning'
report :warning, :response_code => 402
end
end
class ExampleOneWarningOneFailing < Outpost::Application
using Outpost::Scouts::Http => 'master http server' do
options :host => 'localhost', :port => 9595, :path => '/warning'
report :warning, :response_code => 402
end
using Outpost::Scouts::Ping => 'load balancer' do
options :host => 'localhost'
report :up, :response_time => {:less_than => 0}
end
end
class ExampleAllFailing < Outpost::Application
using Outpost::Scouts::Http => 'master http server' do
options :host => 'localhost', :port => 9595, :path => '/fail'
report :up, :response_body => {:match => /Up/}
end
using Outpost::Scouts::Ping => 'load balancer' do
options :host => 'localhost'
report :up, :response_time => {:less_than => -1}
end
end
it "should report up when everything's ok" do
assert_equal :up, ExamplePingAndHttp.new.run
end
it "should report warning when at least one scout reports warning" do
assert_equal :warning, ExampleOneWarningOnePassing.new.run
end
it "should report down when at least one scout reports down" do
assert_equal :down, ExampleOneFailingOnePassing.new.run
assert_equal :down, ExampleOneWarningOneFailing.new.run
end
it "should report down when all are down" do
assert_equal :down, ExampleAllFailing.new.run
end
it "should build error message" do
outpost = ExampleAllFailing.new
outpost.run
assert outpost.messages.include?(
"Outpost::Scouts::Http: 'master http server' is reporting down."
)
assert outpost.messages.include?(
"Outpost::Scouts::Ping: 'load balancer' is reporting down."
)
end
end