litmus_paper 0.9.5 → 0.9.6
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.
@@ -45,14 +45,16 @@ module LitmusPaper
|
|
45
45
|
else
|
46
46
|
case health.direction
|
47
47
|
when :up, :health
|
48
|
-
output << "ready"
|
48
|
+
output << "ready" # administrative state
|
49
|
+
output << "up" # operational state
|
49
50
|
when :down
|
50
|
-
output << "drain"
|
51
|
+
output << "drain" # administrative state
|
51
52
|
when :none
|
52
53
|
if health.ok?
|
53
|
-
output << "ready"
|
54
|
+
output << "ready" # administrative state
|
55
|
+
output << "up" # operational state
|
54
56
|
else
|
55
|
-
output << "down"
|
57
|
+
output << "down" # operational state
|
56
58
|
end
|
57
59
|
end
|
58
60
|
output << "#{health.value.to_s}%"
|
@@ -5,7 +5,7 @@ module LitmusPaper
|
|
5
5
|
@weight = weight
|
6
6
|
@hosts = hosts
|
7
7
|
@options = options
|
8
|
-
@timeout = options.fetch(:timeout_seconds, 5)
|
8
|
+
@timeout = options.fetch(:timeout_seconds, 5) / @hosts.length.to_f
|
9
9
|
end
|
10
10
|
|
11
11
|
def tcp_connect?(host, port)
|
@@ -15,7 +15,7 @@ module LitmusPaper
|
|
15
15
|
end
|
16
16
|
true
|
17
17
|
rescue Timeout::Error
|
18
|
-
LitmusPaper.logger.info("
|
18
|
+
LitmusPaper.logger.info("Timed out connecting to #{host}:#{port} after #{@timeout}s")
|
19
19
|
false
|
20
20
|
rescue => e
|
21
21
|
LitmusPaper.logger.info("TCP connect to #{host}:#{port} failed with #{e.message}")
|
data/lib/litmus_paper/version.rb
CHANGED
@@ -18,20 +18,20 @@ describe LitmusPaper::CLI::AgentCheck do
|
|
18
18
|
test_service = LitmusPaper::Service.new('test', [AlwaysAvailableDependency.new], [LitmusPaper::Metric::ConstantMetric.new(100)])
|
19
19
|
LitmusPaper.services['test'] = test_service
|
20
20
|
LitmusPaper::StatusFile.service_health_file("test").create("Forcing health", 88)
|
21
|
-
agent_check("test").should == "ready\t88%\r\n"
|
21
|
+
agent_check("test").should == "ready\tup\t88%\r\n"
|
22
22
|
end
|
23
23
|
|
24
24
|
it "returns the actual health value for an unhealthy service when the measured health is less than the forced value" do
|
25
25
|
test_service = LitmusPaper::Service.new('test', [NeverAvailableDependency.new], [LitmusPaper::Metric::ConstantMetric.new(100)])
|
26
26
|
LitmusPaper.services['test'] = test_service
|
27
27
|
LitmusPaper::StatusFile.service_health_file("test").create("Forcing health", 88)
|
28
|
-
agent_check("test").should == "ready\t0%\r\n"
|
28
|
+
agent_check("test").should == "ready\tup\t0%\r\n"
|
29
29
|
end
|
30
30
|
|
31
31
|
it "is 'ready' when the service is passing" do
|
32
32
|
test_service = LitmusPaper::Service.new('test', [AlwaysAvailableDependency.new], [LitmusPaper::Metric::ConstantMetric.new(100)])
|
33
33
|
LitmusPaper.services['test'] = test_service
|
34
|
-
agent_check("test").should == "ready\t100%\r\n"
|
34
|
+
agent_check("test").should == "ready\tup\t100%\r\n"
|
35
35
|
end
|
36
36
|
|
37
37
|
it "is 'down' when the check fails" do
|
@@ -64,7 +64,7 @@ describe LitmusPaper::CLI::AgentCheck do
|
|
64
64
|
test_service = LitmusPaper::Service.new('test', [NeverAvailableDependency.new], [LitmusPaper::Metric::ConstantMetric.new(100)])
|
65
65
|
LitmusPaper.services['test'] = test_service
|
66
66
|
LitmusPaper::StatusFile.service_up_file("test").create("Up for testing")
|
67
|
-
agent_check("test").should == "ready\t100%\r\n"
|
67
|
+
agent_check("test").should == "ready\tup\t100%\r\n"
|
68
68
|
end
|
69
69
|
|
70
70
|
it "is 'drain' when a global down file exists" do
|
@@ -78,7 +78,7 @@ describe LitmusPaper::CLI::AgentCheck do
|
|
78
78
|
test_service = LitmusPaper::Service.new('test', [NeverAvailableDependency.new], [LitmusPaper::Metric::ConstantMetric.new(100)])
|
79
79
|
LitmusPaper.services['test'] = test_service
|
80
80
|
LitmusPaper::StatusFile.global_up_file.create("Up for testing")
|
81
|
-
agent_check("test").should == "ready\t100%\r\n"
|
81
|
+
agent_check("test").should == "ready\tup\t100%\r\n"
|
82
82
|
end
|
83
83
|
end
|
84
84
|
end
|
@@ -95,6 +95,61 @@ describe LitmusPaper::Dependency::TCP do
|
|
95
95
|
internet_health.current_health.should == 0
|
96
96
|
end
|
97
97
|
|
98
|
+
it "returns shortly after the timeout provided when all hosts timeout" do
|
99
|
+
TCPSocket.stub(:new) do
|
100
|
+
sleep(5)
|
101
|
+
end
|
102
|
+
internet_health = LitmusPaper::Metric::InternetHealth.new(
|
103
|
+
100,
|
104
|
+
["127.0.0.1:6000",
|
105
|
+
"127.0.0.1:6000",
|
106
|
+
"127.0.0.1:6000",
|
107
|
+
"127.0.0.1:6000"],
|
108
|
+
{ :timeout_seconds => 2 },
|
109
|
+
)
|
110
|
+
health = nil
|
111
|
+
Timeout.timeout(3) do
|
112
|
+
health = internet_health.current_health
|
113
|
+
end
|
114
|
+
health.should == 0
|
115
|
+
end
|
116
|
+
|
117
|
+
it "returns shortly after the timeout provided when one of many hosts timeout" do
|
118
|
+
TCPSocket.stub(:new) do
|
119
|
+
TCPSocket.unstub(:new)
|
120
|
+
sleep(5)
|
121
|
+
end
|
122
|
+
internet_health = LitmusPaper::Metric::InternetHealth.new(
|
123
|
+
100,
|
124
|
+
["127.0.0.1:6000",
|
125
|
+
"127.0.0.1:6000",
|
126
|
+
"127.0.0.1:6000",
|
127
|
+
"127.0.0.1:6000"],
|
128
|
+
{ :timeout_seconds => 2 },
|
129
|
+
)
|
130
|
+
health = nil
|
131
|
+
Timeout.timeout(3) do
|
132
|
+
health = internet_health.current_health
|
133
|
+
end
|
134
|
+
health.should == 0
|
135
|
+
end
|
136
|
+
|
137
|
+
it "returns shortly after the timeout when one host times out" do
|
138
|
+
TCPSocket.stub(:new) do
|
139
|
+
sleep(5)
|
140
|
+
end
|
141
|
+
internet_health = LitmusPaper::Metric::InternetHealth.new(
|
142
|
+
100,
|
143
|
+
["127.0.0.1:6000"],
|
144
|
+
{ :timeout_seconds => 2 },
|
145
|
+
)
|
146
|
+
health = nil
|
147
|
+
Timeout.timeout(3) do
|
148
|
+
health = internet_health.current_health
|
149
|
+
end
|
150
|
+
health.should == 0
|
151
|
+
end
|
152
|
+
|
98
153
|
it "logs exceptions and returns 0" do
|
99
154
|
internet_health = LitmusPaper::Metric::InternetHealth.new(100, ["127.0.0.1:6000"])
|
100
155
|
LitmusPaper.logger.should_receive(:info)
|
metadata
CHANGED
@@ -1,153 +1,174 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: litmus_paper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.6
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- Braintreeps
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date: 2017-05-
|
12
|
+
date: 2017-05-17 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: sinatra
|
15
16
|
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
16
18
|
requirements:
|
17
|
-
- -
|
19
|
+
- - ~>
|
18
20
|
- !ruby/object:Gem::Version
|
19
21
|
version: 1.3.2
|
20
22
|
type: :runtime
|
21
23
|
prerelease: false
|
22
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
23
26
|
requirements:
|
24
|
-
- -
|
27
|
+
- - ~>
|
25
28
|
- !ruby/object:Gem::Version
|
26
29
|
version: 1.3.2
|
27
30
|
- !ruby/object:Gem::Dependency
|
28
31
|
name: facter
|
29
32
|
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
30
34
|
requirements:
|
31
|
-
- -
|
35
|
+
- - ~>
|
32
36
|
- !ruby/object:Gem::Version
|
33
37
|
version: 1.7.5
|
34
38
|
type: :runtime
|
35
39
|
prerelease: false
|
36
40
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
37
42
|
requirements:
|
38
|
-
- -
|
43
|
+
- - ~>
|
39
44
|
- !ruby/object:Gem::Version
|
40
45
|
version: 1.7.5
|
41
46
|
- !ruby/object:Gem::Dependency
|
42
47
|
name: remote_syslog_logger
|
43
48
|
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
44
50
|
requirements:
|
45
|
-
- -
|
51
|
+
- - ~>
|
46
52
|
- !ruby/object:Gem::Version
|
47
53
|
version: 1.0.3
|
48
54
|
type: :runtime
|
49
55
|
prerelease: false
|
50
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
51
58
|
requirements:
|
52
|
-
- -
|
59
|
+
- - ~>
|
53
60
|
- !ruby/object:Gem::Version
|
54
61
|
version: 1.0.3
|
55
62
|
- !ruby/object:Gem::Dependency
|
56
63
|
name: popen4
|
57
64
|
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
58
66
|
requirements:
|
59
|
-
- -
|
67
|
+
- - ~>
|
60
68
|
- !ruby/object:Gem::Version
|
61
69
|
version: 0.1.2
|
62
70
|
type: :runtime
|
63
71
|
prerelease: false
|
64
72
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
65
74
|
requirements:
|
66
|
-
- -
|
75
|
+
- - ~>
|
67
76
|
- !ruby/object:Gem::Version
|
68
77
|
version: 0.1.2
|
69
78
|
- !ruby/object:Gem::Dependency
|
70
79
|
name: unicorn
|
71
80
|
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
72
82
|
requirements:
|
73
|
-
- -
|
83
|
+
- - ~>
|
74
84
|
- !ruby/object:Gem::Version
|
75
85
|
version: 4.6.2
|
76
86
|
type: :runtime
|
77
87
|
prerelease: false
|
78
88
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
79
90
|
requirements:
|
80
|
-
- -
|
91
|
+
- - ~>
|
81
92
|
- !ruby/object:Gem::Version
|
82
93
|
version: 4.6.2
|
83
94
|
- !ruby/object:Gem::Dependency
|
84
95
|
name: colorize
|
85
96
|
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
86
98
|
requirements:
|
87
|
-
- -
|
99
|
+
- - ! '>='
|
88
100
|
- !ruby/object:Gem::Version
|
89
101
|
version: '0'
|
90
102
|
type: :runtime
|
91
103
|
prerelease: false
|
92
104
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
93
106
|
requirements:
|
94
|
-
- -
|
107
|
+
- - ! '>='
|
95
108
|
- !ruby/object:Gem::Version
|
96
109
|
version: '0'
|
97
110
|
- !ruby/object:Gem::Dependency
|
98
111
|
name: rspec
|
99
112
|
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
100
114
|
requirements:
|
101
|
-
- -
|
115
|
+
- - ~>
|
102
116
|
- !ruby/object:Gem::Version
|
103
117
|
version: 2.9.0
|
104
118
|
type: :development
|
105
119
|
prerelease: false
|
106
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
107
122
|
requirements:
|
108
|
-
- -
|
123
|
+
- - ~>
|
109
124
|
- !ruby/object:Gem::Version
|
110
125
|
version: 2.9.0
|
111
126
|
- !ruby/object:Gem::Dependency
|
112
127
|
name: rack-test
|
113
128
|
requirement: !ruby/object:Gem::Requirement
|
129
|
+
none: false
|
114
130
|
requirements:
|
115
|
-
- -
|
131
|
+
- - ~>
|
116
132
|
- !ruby/object:Gem::Version
|
117
133
|
version: 0.6.1
|
118
134
|
type: :development
|
119
135
|
prerelease: false
|
120
136
|
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
121
138
|
requirements:
|
122
|
-
- -
|
139
|
+
- - ~>
|
123
140
|
- !ruby/object:Gem::Version
|
124
141
|
version: 0.6.1
|
125
142
|
- !ruby/object:Gem::Dependency
|
126
143
|
name: rake
|
127
144
|
requirement: !ruby/object:Gem::Requirement
|
145
|
+
none: false
|
128
146
|
requirements:
|
129
|
-
- -
|
147
|
+
- - ~>
|
130
148
|
- !ruby/object:Gem::Version
|
131
149
|
version: 0.9.2.2
|
132
150
|
type: :development
|
133
151
|
prerelease: false
|
134
152
|
version_requirements: !ruby/object:Gem::Requirement
|
153
|
+
none: false
|
135
154
|
requirements:
|
136
|
-
- -
|
155
|
+
- - ~>
|
137
156
|
- !ruby/object:Gem::Version
|
138
157
|
version: 0.9.2.2
|
139
158
|
- !ruby/object:Gem::Dependency
|
140
159
|
name: rake_commit
|
141
160
|
requirement: !ruby/object:Gem::Requirement
|
161
|
+
none: false
|
142
162
|
requirements:
|
143
|
-
- -
|
163
|
+
- - ~>
|
144
164
|
- !ruby/object:Gem::Version
|
145
165
|
version: '0.13'
|
146
166
|
type: :development
|
147
167
|
prerelease: false
|
148
168
|
version_requirements: !ruby/object:Gem::Requirement
|
169
|
+
none: false
|
149
170
|
requirements:
|
150
|
-
- -
|
171
|
+
- - ~>
|
151
172
|
- !ruby/object:Gem::Version
|
152
173
|
version: '0.13'
|
153
174
|
description: Backend health tester for HA Services
|
@@ -160,10 +181,10 @@ executables:
|
|
160
181
|
extensions: []
|
161
182
|
extra_rdoc_files: []
|
162
183
|
files:
|
163
|
-
-
|
164
|
-
-
|
165
|
-
-
|
166
|
-
-
|
184
|
+
- .gitignore
|
185
|
+
- .rake_commit
|
186
|
+
- .ruby-version
|
187
|
+
- .travis.yml
|
167
188
|
- Gemfile
|
168
189
|
- LICENSE
|
169
190
|
- README.md
|
@@ -241,26 +262,27 @@ files:
|
|
241
262
|
- xinetd.conf
|
242
263
|
homepage: https://github.com/braintree/litmus_paper
|
243
264
|
licenses: []
|
244
|
-
metadata: {}
|
245
265
|
post_install_message:
|
246
266
|
rdoc_options: []
|
247
267
|
require_paths:
|
248
268
|
- lib
|
249
269
|
required_ruby_version: !ruby/object:Gem::Requirement
|
270
|
+
none: false
|
250
271
|
requirements:
|
251
|
-
- -
|
272
|
+
- - ! '>='
|
252
273
|
- !ruby/object:Gem::Version
|
253
274
|
version: '0'
|
254
275
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
276
|
+
none: false
|
255
277
|
requirements:
|
256
|
-
- -
|
278
|
+
- - ! '>='
|
257
279
|
- !ruby/object:Gem::Version
|
258
280
|
version: '0'
|
259
281
|
requirements: []
|
260
282
|
rubyforge_project:
|
261
|
-
rubygems_version:
|
283
|
+
rubygems_version: 1.8.23
|
262
284
|
signing_key:
|
263
|
-
specification_version:
|
285
|
+
specification_version: 3
|
264
286
|
summary: Backend health tester for HA Services, partner project of big_brother
|
265
287
|
test_files:
|
266
288
|
- spec/litmus_paper/app_spec.rb
|
checksums.yaml
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz: 80c1178aa0a49a68ec67e4b71ad73603c08261e4
|
4
|
-
data.tar.gz: ccaebee4045e40b60b41352bab17097199d92d6f
|
5
|
-
SHA512:
|
6
|
-
metadata.gz: dc60ac971f97332058e36ebb69069c0abb284fdab25b1a9f0acbd86835c7f2498b0356c70dca25ae6eb18471b8ebab500a7b160d2f9bc9f5375b0a43bd593670
|
7
|
-
data.tar.gz: 29cba90319890e85159b2fa30d1d740378da6754ae5f8a31ba1f9a6816c4e4fb0a63832e3317b411e7245af3fc748037c91053f9d98ddeb33c8f0e691943b80e
|