fettle 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,24 @@
1
- example_id | status | run_time |
2
- ------------------------------------------------------------ | ------ | --------------- |
3
- ./spec/controllers/fettle/health_controller_spec.rb[1:1:1:1] | passed | 0.00815 seconds |
1
+ example_id | status | run_time |
2
+ -------------------------------------------------------------- | ------ | --------------- |
3
+ ./spec/controllers/fettle/health_controller_spec.rb[1:1:1:1] | passed | 0.01177 seconds |
4
+ ./spec/controllers/fettle/health_controller_spec.rb[1:1:1:2:1] | passed | 0.00176 seconds |
5
+ ./spec/controllers/fettle/health_controller_spec.rb[1:1:2:1] | passed | 0.00158 seconds |
6
+ ./spec/controllers/fettle/health_controller_spec.rb[1:1:2:2:1] | passed | 0.00166 seconds |
7
+ ./spec/lib/fettle/check_result_spec.rb[1:1:1:1] | passed | 0.00044 seconds |
8
+ ./spec/lib/fettle/check_result_spec.rb[1:1:2:1] | passed | 0.00044 seconds |
9
+ ./spec/lib/fettle/check_result_spec.rb[1:2:1:1] | passed | 0.00044 seconds |
10
+ ./spec/lib/fettle/check_result_spec.rb[1:2:2:1] | passed | 0.00086 seconds |
11
+ ./spec/lib/fettle/checker_spec.rb[1:1:1:1] | passed | 0.00063 seconds |
12
+ ./spec/lib/fettle/checker_spec.rb[1:1:1:2:1] | passed | 0.00063 seconds |
13
+ ./spec/lib/fettle/checker_spec.rb[1:1:2:1] | passed | 0.00063 seconds |
14
+ ./spec/lib/fettle/checker_spec.rb[1:1:2:2:1] | passed | 0.00069 seconds |
15
+ ./spec/lib/fettle/checker_spec.rb[1:1:3:1] | passed | 0.00131 seconds |
16
+ ./spec/lib/fettle/checker_spec.rb[1:1:3:2:1] | passed | 0.00068 seconds |
17
+ ./spec/lib/fettle/checks/active_record_check_spec.rb[1:1:1:1] | passed | 0.00922 seconds |
18
+ ./spec/lib/fettle/checks/active_record_check_spec.rb[1:1:2:1] | passed | 0.00154 seconds |
19
+ ./spec/lib/fettle/configuration_spec.rb[1:1:1] | passed | 0.00228 seconds |
20
+ ./spec/lib/fettle/configuration_spec.rb[1:2:1:1:1] | passed | 0.00142 seconds |
21
+ ./spec/lib/fettle/liveness_check_result_spec.rb[1:1:1:1] | passed | 0.0005 seconds |
22
+ ./spec/lib/fettle/liveness_check_result_spec.rb[1:1:2:1] | passed | 0.00049 seconds |
23
+ ./spec/lib/fettle/liveness_check_result_spec.rb[1:2:1:1] | passed | 0.00045 seconds |
24
+ ./spec/lib/fettle/liveness_check_result_spec.rb[1:2:2:1] | passed | 0.00041 seconds |
@@ -0,0 +1,38 @@
1
+ require 'spec_helper'
2
+ require 'fettle/check_result'
3
+
4
+ module Fettle
5
+ RSpec.describe CheckResult do
6
+ describe '#healthy?' do
7
+ subject { described_class.new(status) }
8
+
9
+ let(:status) { true }
10
+
11
+ context 'for successful checks' do
12
+ it { is_expected.to be_healthy }
13
+ end
14
+
15
+ context 'for failed checks' do
16
+ let(:status) { false }
17
+
18
+ it { is_expected.to_not be_healthy }
19
+ end
20
+ end
21
+
22
+ describe '#status_code' do
23
+ subject { described_class.new(status).status_code }
24
+
25
+ let(:status) { true }
26
+
27
+ context 'for successful checks' do
28
+ it { is_expected.to eq(:ok) }
29
+ end
30
+
31
+ context 'for failed checks' do
32
+ let(:status) { false }
33
+
34
+ it { is_expected.to eq(:service_unavailable) }
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,91 @@
1
+ require 'spec_helper'
2
+ require 'fettle/checker'
3
+
4
+ module Fettle
5
+ RSpec.describe Checker do
6
+ describe '.run' do
7
+ subject(:result) { described_class.run(tag: tag) }
8
+
9
+ before do
10
+ allow(Configuration).to receive(:checks).and_return(checks)
11
+ end
12
+ let(:checks) do
13
+ [ check ]
14
+ end
15
+
16
+ let(:tag) { nil }
17
+
18
+ let(:check) do
19
+ Class.new do
20
+ def self.call
21
+ true
22
+ end
23
+ end
24
+ end
25
+
26
+ context 'when all checks are successful' do
27
+ it 'returns a successful CheckResult' do
28
+ expect(result).to be_an_instance_of(CheckResult)
29
+ expect(result.healthy?).to be_truthy
30
+ end
31
+
32
+ context 'and the liveness tag is passed' do
33
+ let(:tag) { 'liveness' }
34
+
35
+ it 'returns a successful LivenessCheckResult' do
36
+ expect(result).to be_an_instance_of(LivenessCheckResult)
37
+ expect(result.healthy?).to be_truthy
38
+ end
39
+ end
40
+ end
41
+
42
+ context 'when a check fails' do
43
+ let(:check) do
44
+ Class.new do
45
+ def self.call
46
+ false
47
+ end
48
+ end
49
+ end
50
+
51
+ it 'returns a failed CheckResult' do
52
+ expect(result).to be_an_instance_of(CheckResult)
53
+ expect(result.healthy?).to be_falsey
54
+ end
55
+
56
+ context 'and the liveness tag is passed' do
57
+ let(:tag) { 'liveness' }
58
+
59
+ it 'returns a failed LivenessCheckResult' do
60
+ expect(result).to be_an_instance_of(LivenessCheckResult)
61
+ expect(result.healthy?).to be_falsey
62
+ end
63
+ end
64
+ end
65
+
66
+ context 'when a check errors' do
67
+ let(:check) do
68
+ Class.new do
69
+ def self.call
70
+ raise
71
+ end
72
+ end
73
+ end
74
+
75
+ it 'returns a failed CheckResult' do
76
+ expect(result).to be_an_instance_of(CheckResult)
77
+ expect(result.healthy?).to be_falsey
78
+ end
79
+
80
+ context 'and the liveness tag is passed' do
81
+ let(:tag) { 'liveness' }
82
+
83
+ it 'returns a failed LivenessCheckResult' do
84
+ expect(result).to be_an_instance_of(LivenessCheckResult)
85
+ expect(result.healthy?).to be_falsey
86
+ end
87
+ end
88
+ end
89
+ end
90
+ end
91
+ end
@@ -0,0 +1,35 @@
1
+ require 'rails_helper'
2
+ require 'fettle/checks/active_record_check'
3
+
4
+ module Fettle
5
+ module Checks
6
+ RSpec.describe ActiveRecordCheck do
7
+ describe '.call' do
8
+ subject(:check) { described_class.call }
9
+
10
+ context 'when a connection can be established' do
11
+ before do
12
+ allow(ActiveRecord::Base)
13
+ .to receive(:connected?).and_return(true)
14
+ end
15
+
16
+ it { is_expected.to be_truthy }
17
+ end
18
+
19
+ context 'when a connection can not be established' do
20
+ before do
21
+ allow(ActiveRecord::Base)
22
+ .to receive(:connected?).and_return(false)
23
+ end
24
+
25
+ it 'raises a failed check error' do
26
+ expect { check }.to raise_error(
27
+ FailedCheck,
28
+ 'Failed to establish database connection'
29
+ )
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,27 @@
1
+ require 'rails_helper'
2
+
3
+ module Fettle
4
+ RSpec.describe Configuration do
5
+ describe '.configure' do
6
+ it 'yields itself' do
7
+ expect { |b| described_class.configure(&b) }
8
+ .to yield_with_args(described_class)
9
+ end
10
+ end
11
+
12
+ describe '.add_check' do
13
+ after { described_class.clear_checks! }
14
+
15
+ context 'when a symbol is passed' do
16
+ context 'and references a valid check' do
17
+ it 'adds the check' do
18
+ described_class.add_check(:active_record)
19
+
20
+ expect(described_class.checks)
21
+ .to include(Checks::ActiveRecordCheck)
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,38 @@
1
+ require 'spec_helper'
2
+ require 'fettle/liveness_check_result'
3
+
4
+ module Fettle
5
+ RSpec.describe LivenessCheckResult do
6
+ describe '#healthy?' do
7
+ subject { described_class.new(status) }
8
+
9
+ let(:status) { true }
10
+
11
+ context 'for successful checks' do
12
+ it { is_expected.to be_healthy }
13
+ end
14
+
15
+ context 'for failed checks' do
16
+ let(:status) { false }
17
+
18
+ it { is_expected.to_not be_healthy }
19
+ end
20
+ end
21
+
22
+ describe '#status_code' do
23
+ subject { described_class.new(status).status_code }
24
+
25
+ let(:status) { true }
26
+
27
+ context 'for successful checks' do
28
+ it { is_expected.to eq(:ok) }
29
+ end
30
+
31
+ context 'for failed checks' do
32
+ let(:status) { false }
33
+
34
+ it { is_expected.to eq(:ok) }
35
+ end
36
+ end
37
+ end
38
+ end
@@ -9,6 +9,8 @@ if Rails.env.production?
9
9
  end
10
10
  require 'rspec/rails'
11
11
 
12
+ require 'fettle'
13
+
12
14
  # Requires supporting ruby files with custom matchers and macros, etc, in
13
15
  # spec/support/ and its subdirectories. Files matching `spec/**/*_spec.rb` are
14
16
  # run as spec files by default. This means that files in spec/support that end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fettle
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sean Kenny
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-10-27 00:00:00.000000000 Z
11
+ date: 2018-01-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -88,7 +88,12 @@ files:
88
88
  - app/views/layouts/fettle/application.html.erb
89
89
  - config/routes.rb
90
90
  - lib/fettle.rb
91
+ - lib/fettle/check_result.rb
92
+ - lib/fettle/checker.rb
93
+ - lib/fettle/checks/active_record_check.rb
94
+ - lib/fettle/configuration.rb
91
95
  - lib/fettle/engine.rb
96
+ - lib/fettle/liveness_check_result.rb
92
97
  - lib/fettle/version.rb
93
98
  - lib/tasks/fettle_tasks.rake
94
99
  - spec/controllers/fettle/health_controller_spec.rb
@@ -125,6 +130,7 @@ files:
125
130
  - spec/dummy/config/initializers/application_controller_renderer.rb
126
131
  - spec/dummy/config/initializers/backtrace_silencers.rb
127
132
  - spec/dummy/config/initializers/cookies_serializer.rb
133
+ - spec/dummy/config/initializers/fettle.rb
128
134
  - spec/dummy/config/initializers/filter_parameter_logging.rb
129
135
  - spec/dummy/config/initializers/inflections.rb
130
136
  - spec/dummy/config/initializers/mime_types.rb
@@ -146,6 +152,11 @@ files:
146
152
  - spec/dummy/public/apple-touch-icon.png
147
153
  - spec/dummy/public/favicon.ico
148
154
  - spec/examples.txt
155
+ - spec/lib/fettle/check_result_spec.rb
156
+ - spec/lib/fettle/checker_spec.rb
157
+ - spec/lib/fettle/checks/active_record_check_spec.rb
158
+ - spec/lib/fettle/configuration_spec.rb
159
+ - spec/lib/fettle/liveness_check_result_spec.rb
149
160
  - spec/rails_helper.rb
150
161
  - spec/spec_helper.rb
151
162
  homepage: https://git.thebeansgroup.com/utilities/fettle
@@ -205,6 +216,7 @@ test_files:
205
216
  - spec/dummy/config/initializers/application_controller_renderer.rb
206
217
  - spec/dummy/config/initializers/backtrace_silencers.rb
207
218
  - spec/dummy/config/initializers/cookies_serializer.rb
219
+ - spec/dummy/config/initializers/fettle.rb
208
220
  - spec/dummy/config/initializers/filter_parameter_logging.rb
209
221
  - spec/dummy/config/initializers/inflections.rb
210
222
  - spec/dummy/config/initializers/mime_types.rb
@@ -228,5 +240,10 @@ test_files:
228
240
  - spec/dummy/public/favicon.ico
229
241
  - spec/dummy/Rakefile
230
242
  - spec/examples.txt
243
+ - spec/lib/fettle/check_result_spec.rb
244
+ - spec/lib/fettle/checker_spec.rb
245
+ - spec/lib/fettle/checks/active_record_check_spec.rb
246
+ - spec/lib/fettle/configuration_spec.rb
247
+ - spec/lib/fettle/liveness_check_result_spec.rb
231
248
  - spec/rails_helper.rb
232
249
  - spec/spec_helper.rb