hey_doctor 1.1.2 → 1.3.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -6,17 +6,29 @@ RSpec.describe '.Rack HealthCheck endpoint' do
6
6
  let(:expected_response) do
7
7
  {
8
8
  app: {
9
- message: 'foo',
10
- success: true
9
+ success: true,
10
+ message: 'foo'
11
11
  },
12
12
  database: {
13
- message: 'foo',
14
- success: true
13
+ success: true,
14
+ message: 'foo'
15
15
  },
16
16
  redis: {
17
- message: 'foo',
18
- success: true
19
- }
17
+ success: true,
18
+ message: 'foo'
19
+ },
20
+ sidekiq: [
21
+ {
22
+ success: true,
23
+ message: 'Sidekiq is connected',
24
+ host: 'sidekiq_1'
25
+ },
26
+ {
27
+ success: false,
28
+ message: 'Error sidekiq',
29
+ host: 'sidekiq_2'
30
+ }
31
+ ]
20
32
  }.to_json
21
33
  end
22
34
 
@@ -24,13 +36,21 @@ RSpec.describe '.Rack HealthCheck endpoint' do
24
36
 
25
37
  before do
26
38
  allow(HeyDoctor::CheckApplicationHealthService).to receive(:call)
27
- .and_return({ message: 'foo', success: true })
39
+ .and_return({ success: true, message: 'foo' })
28
40
 
29
41
  allow(HeyDoctor::CheckDatabaseHealthService).to receive(:call)
30
- .and_return({ message: 'foo', success: true })
42
+ .and_return({ success: true, message: 'foo' })
31
43
 
32
44
  allow(HeyDoctor::CheckRedisHealthService).to receive(:call)
33
- .and_return({ message: 'foo', success: true })
45
+ .and_return({ success: true, message: 'foo' })
46
+
47
+ allow(HeyDoctor::CheckSidekiqHealthService).to receive(:call)
48
+ .and_return(
49
+ [
50
+ { success: true, message: 'Sidekiq is connected', host: 'sidekiq_1' },
51
+ { success: false, message: 'Error sidekiq', host: 'sidekiq_2' }
52
+ ]
53
+ )
34
54
  end
35
55
 
36
56
  it 'build the json response' do
@@ -16,8 +16,8 @@ RSpec.describe HeyDoctor::CheckApplicationHealthService do
16
16
  context 'When app is running' do
17
17
  let(:expected_response) do
18
18
  {
19
- message: 'Application is running',
20
- success: true
19
+ success: true,
20
+ message: 'Application is running'
21
21
  }
22
22
  end
23
23
 
@@ -31,8 +31,8 @@ RSpec.describe HeyDoctor::CheckApplicationHealthService do
31
31
  context 'When app is down' do
32
32
  let(:expected_response) do
33
33
  {
34
- message: 'Application down, call the firefighters',
35
- success: false
34
+ success: false,
35
+ message: 'Application down, call the firefighters'
36
36
  }
37
37
  end
38
38
 
@@ -7,8 +7,8 @@ RSpec.describe HeyDoctor::CheckDatabaseHealthService do
7
7
  context 'when it is connected' do
8
8
  let(:expected_response) do
9
9
  {
10
- message: 'Database is connected',
11
- success: true
10
+ success: true,
11
+ message: 'Database is connected'
12
12
  }
13
13
  end
14
14
 
@@ -20,8 +20,8 @@ RSpec.describe HeyDoctor::CheckDatabaseHealthService do
20
20
  context 'when it is not connected' do
21
21
  let(:expected_response) do
22
22
  {
23
- message: 'Error connecting to database',
24
- success: false
23
+ success: false,
24
+ message: 'Error connecting to database'
25
25
  }
26
26
  end
27
27
 
@@ -38,8 +38,8 @@ RSpec.describe HeyDoctor::CheckDatabaseHealthService do
38
38
  context 'When migration is Pending' do
39
39
  let(:expected_response) do
40
40
  {
41
- message: 'Pending migrations detected',
42
- success: true
41
+ success: true,
42
+ message: 'Pending migrations detected'
43
43
  }
44
44
  end
45
45
 
@@ -7,8 +7,8 @@ RSpec.describe HeyDoctor::CheckRedisHealthService do
7
7
  context 'when it is connected' do
8
8
  let(:expected_response) do
9
9
  {
10
- message: 'Redis is connected',
11
- success: true
10
+ success: true,
11
+ message: 'Redis is connected'
12
12
  }
13
13
  end
14
14
 
@@ -20,8 +20,8 @@ RSpec.describe HeyDoctor::CheckRedisHealthService do
20
20
  context 'when it is not connected' do
21
21
  let(:expected_response) do
22
22
  {
23
- message: 'Error connecting to redis',
24
- success: false
23
+ success: false,
24
+ message: 'Error connecting to redis'
25
25
  }
26
26
  end
27
27
 
@@ -0,0 +1,71 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rails_helper'
4
+
5
+ RSpec.describe HeyDoctor::CheckSidekiqHealthService do
6
+ describe '.call' do
7
+ context 'when it is connected' do
8
+ let(:expected_response) do
9
+ [
10
+ {
11
+ success: true,
12
+ message: 'Sidekiq is connected',
13
+ host: 'dcsiloifoodcatalogimporter_sidekiq_1'
14
+ }
15
+ ]
16
+ end
17
+
18
+ before do
19
+ allow(described_class).to receive(:hosts)
20
+ .and_return(['dcsiloifoodcatalogimporter_sidekiq_1'])
21
+
22
+ allow(described_class).to receive(:connected?)
23
+ .with('dcsiloifoodcatalogimporter_sidekiq_1').and_return(true)
24
+ end
25
+
26
+ it 'respond with success' do
27
+ expect(described_class.call).to eq(expected_response)
28
+ end
29
+ end
30
+
31
+ context 'when it is not connected' do
32
+ let(:expected_response) do
33
+ [
34
+ {
35
+ success: false,
36
+ message: 'Error connecting to sidekiq',
37
+ host: 'dcsiloifoodcatalogimporter_sidekiq_2'
38
+ }
39
+ ]
40
+ end
41
+
42
+ before do
43
+ allow(described_class).to receive(:hosts)
44
+ .and_return(['dcsiloifoodcatalogimporter_sidekiq_2'])
45
+ end
46
+
47
+ it 'respond with error' do
48
+ expect(described_class.call).to eq(expected_response)
49
+ end
50
+ end
51
+ end
52
+
53
+ context 'when there is no executor machine' do
54
+ let(:expected_response) do
55
+ {
56
+ success: false,
57
+ message: 'None sidekiq host was found, add it to the ' \
58
+ 'ENV SIDEKIQ_HOSTS listing your machine(s) ip or' \
59
+ ' dns using ; for each host'
60
+ }
61
+ end
62
+
63
+ before do
64
+ allow(described_class).to receive(:hosts).and_return(nil)
65
+ end
66
+
67
+ it 'respond with error' do
68
+ expect(described_class.call).to eq(expected_response)
69
+ end
70
+ end
71
+ end
data/spec/spec_helper.rb CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  require 'simplecov'
4
4
  require 'rack/test'
5
+ require 'pry'
5
6
 
6
7
  SimpleCov.start 'rails' do
7
8
  add_filter '/bin'
@@ -10,7 +11,7 @@ SimpleCov.start 'rails' do
10
11
  add_filter '/lib/hey_doctor/version.rb'
11
12
  end
12
13
 
13
- SimpleCov.minimum_coverage 95
14
+ SimpleCov.minimum_coverage 90
14
15
 
15
16
  RSpec.configure do |config|
16
17
  config.expect_with :rspec do |expectations|
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hey_doctor
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.2
4
+ version: 1.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matheus Acosta
8
8
  - Erick Nascimento
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2021-03-12 00:00:00.000000000 Z
12
+ date: 2021-09-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: dotenv-rails
@@ -25,6 +25,20 @@ dependencies:
25
25
  - - ">="
26
26
  - !ruby/object:Gem::Version
27
27
  version: '0'
28
+ - !ruby/object:Gem::Dependency
29
+ name: pry
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ type: :development
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
28
42
  - !ruby/object:Gem::Dependency
29
43
  name: redis
30
44
  requirement: !ruby/object:Gem::Requirement
@@ -81,6 +95,20 @@ dependencies:
81
95
  - - ">="
82
96
  - !ruby/object:Gem::Version
83
97
  version: '0'
98
+ - !ruby/object:Gem::Dependency
99
+ name: mimemagic
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - '='
103
+ - !ruby/object:Gem::Version
104
+ version: 0.3.7
105
+ type: :runtime
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - '='
110
+ - !ruby/object:Gem::Version
111
+ version: 0.3.7
84
112
  - !ruby/object:Gem::Dependency
85
113
  name: rails
86
114
  requirement: !ruby/object:Gem::Requirement
@@ -98,6 +126,7 @@ dependencies:
98
126
  description: It mounts a middleware endpoint to check the stack health
99
127
  email:
100
128
  - matheus.martins@deliverycenter.com
129
+ - matheusthebr@gmail.com
101
130
  - erick.nascimento@deliverycenter.com
102
131
  executables: []
103
132
  extensions: []
@@ -109,6 +138,7 @@ files:
109
138
  - app/services/hey_doctor/check_application_health_service.rb
110
139
  - app/services/hey_doctor/check_database_health_service.rb
111
140
  - app/services/hey_doctor/check_redis_health_service.rb
141
+ - app/services/hey_doctor/check_sidekiq_health_service.rb
112
142
  - config/routes.rb
113
143
  - lib/hey_doctor.rb
114
144
  - lib/hey_doctor/engine.rb
@@ -162,6 +192,7 @@ files:
162
192
  - spec/services/hey_doctor/check_application_health_service_spec.rb
163
193
  - spec/services/hey_doctor/check_database_health_service_spec.rb
164
194
  - spec/services/hey_doctor/check_redis_health_service_spec.rb
195
+ - spec/services/hey_doctor/check_sidekiq_health_service_spec.rb
165
196
  - spec/spec_helper.rb
166
197
  homepage: https://github.com/deliverycenter/hey_doctor
167
198
  licenses:
@@ -170,7 +201,7 @@ metadata:
170
201
  homepage_uri: https://github.com/deliverycenter/hey_doctor
171
202
  source_code_uri: https://github.com/deliverycenter/hey_doctor
172
203
  changelog_uri: https://github.com/deliverycenter/hey_doctor
173
- post_install_message:
204
+ post_install_message:
174
205
  rdoc_options: []
175
206
  require_paths:
176
207
  - lib
@@ -185,57 +216,58 @@ required_rubygems_version: !ruby/object:Gem::Requirement
185
216
  - !ruby/object:Gem::Version
186
217
  version: '0'
187
218
  requirements: []
188
- rubygems_version: 3.0.8
189
- signing_key:
219
+ rubygems_version: 3.0.3
220
+ signing_key:
190
221
  specification_version: 4
191
222
  summary: A health check gem implementation in ruby.
192
223
  test_files:
193
224
  - spec/spec_helper.rb
194
- - spec/dummy/app/mailers/application_mailer.rb
195
- - spec/dummy/app/models/application_record.rb
196
- - spec/dummy/app/javascript/packs/application.js
197
- - spec/dummy/app/jobs/application_job.rb
198
- - spec/dummy/app/controllers/application_controller.rb
199
- - spec/dummy/app/controllers/home_controller.rb
200
- - spec/dummy/app/views/layouts/mailer.html.erb
201
- - spec/dummy/app/views/layouts/mailer.text.erb
202
- - spec/dummy/app/assets/config/manifest.js
203
- - spec/dummy/app/assets/stylesheets/application.css
204
- - spec/dummy/app/channels/application_cable/connection.rb
205
- - spec/dummy/app/channels/application_cable/channel.rb
206
- - spec/dummy/bin/rake
207
- - spec/dummy/bin/setup
225
+ - spec/dummy/config.ru
226
+ - spec/dummy/tmp/pids/server.pid
227
+ - spec/dummy/tmp/development_secret.txt
208
228
  - spec/dummy/bin/rails
209
- - spec/dummy/config/routes.rb
229
+ - spec/dummy/bin/setup
230
+ - spec/dummy/bin/rake
231
+ - spec/dummy/log/test.log
232
+ - spec/dummy/log/development.log
233
+ - spec/dummy/Rakefile
234
+ - spec/dummy/db/schema.rb
210
235
  - spec/dummy/config/locales/en.yml
236
+ - spec/dummy/config/routes.rb
211
237
  - spec/dummy/config/cable.yml
238
+ - spec/dummy/config/storage.yml
239
+ - spec/dummy/config/boot.rb
212
240
  - spec/dummy/config/environments/production.rb
213
- - spec/dummy/config/environments/development.rb
214
241
  - spec/dummy/config/environments/test.rb
215
- - spec/dummy/config/environment.rb
216
- - spec/dummy/config/storage.yml
217
- - spec/dummy/config/application.rb
242
+ - spec/dummy/config/environments/development.rb
218
243
  - spec/dummy/config/puma.rb
219
244
  - spec/dummy/config/database.yml
220
- - spec/dummy/config/boot.rb
245
+ - spec/dummy/config/application.rb
246
+ - spec/dummy/config/environment.rb
247
+ - spec/dummy/config/initializers/inflections.rb
221
248
  - spec/dummy/config/initializers/application_controller_renderer.rb
222
- - spec/dummy/config/initializers/backtrace_silencers.rb
223
- - spec/dummy/config/initializers/mime_types.rb
224
- - spec/dummy/config/initializers/filter_parameter_logging.rb
225
- - spec/dummy/config/initializers/wrap_parameters.rb
226
249
  - spec/dummy/config/initializers/redis.rb
227
- - spec/dummy/config/initializers/inflections.rb
250
+ - spec/dummy/config/initializers/wrap_parameters.rb
228
251
  - spec/dummy/config/initializers/cors.rb
229
- - spec/dummy/config.ru
230
- - spec/dummy/Rakefile
231
- - spec/dummy/db/schema.rb
232
- - spec/dummy/log/test.log
233
- - spec/dummy/log/development.log
234
- - spec/dummy/tmp/pids/server.pid
235
- - spec/dummy/tmp/development_secret.txt
236
- - spec/requests/health_check_spec.rb
237
- - spec/lib/hey_doctor/hey_doctor_spec.rb
252
+ - spec/dummy/config/initializers/mime_types.rb
253
+ - spec/dummy/config/initializers/backtrace_silencers.rb
254
+ - spec/dummy/config/initializers/filter_parameter_logging.rb
255
+ - spec/dummy/app/javascript/packs/application.js
256
+ - spec/dummy/app/models/application_record.rb
257
+ - spec/dummy/app/controllers/home_controller.rb
258
+ - spec/dummy/app/controllers/application_controller.rb
259
+ - spec/dummy/app/views/layouts/mailer.html.erb
260
+ - spec/dummy/app/views/layouts/mailer.text.erb
261
+ - spec/dummy/app/channels/application_cable/channel.rb
262
+ - spec/dummy/app/channels/application_cable/connection.rb
263
+ - spec/dummy/app/assets/stylesheets/application.css
264
+ - spec/dummy/app/assets/config/manifest.js
265
+ - spec/dummy/app/mailers/application_mailer.rb
266
+ - spec/dummy/app/jobs/application_job.rb
238
267
  - spec/rails_helper.rb
239
- - spec/services/hey_doctor/check_database_health_service_spec.rb
240
- - spec/services/hey_doctor/check_redis_health_service_spec.rb
268
+ - spec/services/hey_doctor/check_sidekiq_health_service_spec.rb
241
269
  - spec/services/hey_doctor/check_application_health_service_spec.rb
270
+ - spec/services/hey_doctor/check_redis_health_service_spec.rb
271
+ - spec/services/hey_doctor/check_database_health_service_spec.rb
272
+ - spec/requests/health_check_spec.rb
273
+ - spec/lib/hey_doctor/hey_doctor_spec.rb