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("Timeout connecting to #{host}:#{port}")
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}")
@@ -1,3 +1,3 @@
1
1
  module LitmusPaper
2
- VERSION = "0.9.5"
2
+ VERSION = "0.9.6"
3
3
  end
@@ -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.5
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-03 00:00:00.000000000 Z
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
- - ".gitignore"
164
- - ".rake_commit"
165
- - ".ruby-version"
166
- - ".travis.yml"
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: 2.2.2
283
+ rubygems_version: 1.8.23
262
284
  signing_key:
263
- specification_version: 4
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