hey_doctor 1.1.0 → 1.2.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
@@ -3,26 +3,11 @@
3
3
  require 'rails_helper'
4
4
 
5
5
  RSpec.describe 'Health Check endpoint', type: :request do
6
- let(:expected_response) do
7
- {
8
- app: {
9
- message: 'Application is running',
10
- success: true
11
- },
12
- database: {
13
- message: 'Database is connected',
14
- success: true
15
- },
16
- redis: {
17
- message: 'Redis is connected',
18
- success: true
19
- }
20
- }.to_json
21
- end
22
-
23
- before { get '/_ah/health' }
6
+ context 'When it reaches the internal app_health' do
7
+ before { get '/_ah/app_health' }
24
8
 
25
- xit 'builds the response' do
26
- expect(response.body).to eq(expected_response)
9
+ it 'gets internal / that is mounted in /_ah/app_health' do
10
+ expect(response.code).to eq('200')
11
+ end
27
12
  end
28
13
  end
@@ -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'
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.0
4
+ version: 1.2.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-01-22 00:00:00.000000000 Z
12
+ date: 2021-04-09 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
@@ -95,7 +123,7 @@ dependencies:
95
123
  - - ">="
96
124
  - !ruby/object:Gem::Version
97
125
  version: 4.2.10
98
- description: It mounts a middleware endpoint to check the stack health.
126
+ description: It mounts a middleware endpoint to check the stack health
99
127
  email:
100
128
  - matheus.martins@deliverycenter.com
101
129
  - erick.nascimento@deliverycenter.com
@@ -109,6 +137,7 @@ files:
109
137
  - app/services/hey_doctor/check_application_health_service.rb
110
138
  - app/services/hey_doctor/check_database_health_service.rb
111
139
  - app/services/hey_doctor/check_redis_health_service.rb
140
+ - app/services/hey_doctor/check_sidekiq_health_service.rb
112
141
  - config/routes.rb
113
142
  - lib/hey_doctor.rb
114
143
  - lib/hey_doctor/engine.rb
@@ -162,6 +191,7 @@ files:
162
191
  - spec/services/hey_doctor/check_application_health_service_spec.rb
163
192
  - spec/services/hey_doctor/check_database_health_service_spec.rb
164
193
  - spec/services/hey_doctor/check_redis_health_service_spec.rb
194
+ - spec/services/hey_doctor/check_sidekiq_health_service_spec.rb
165
195
  - spec/spec_helper.rb
166
196
  homepage: https://github.com/deliverycenter/hey_doctor
167
197
  licenses:
@@ -170,7 +200,7 @@ metadata:
170
200
  homepage_uri: https://github.com/deliverycenter/hey_doctor
171
201
  source_code_uri: https://github.com/deliverycenter/hey_doctor
172
202
  changelog_uri: https://github.com/deliverycenter/hey_doctor
173
- post_install_message:
203
+ post_install_message:
174
204
  rdoc_options: []
175
205
  require_paths:
176
206
  - lib
@@ -185,57 +215,58 @@ required_rubygems_version: !ruby/object:Gem::Requirement
185
215
  - !ruby/object:Gem::Version
186
216
  version: '0'
187
217
  requirements: []
188
- rubygems_version: 3.0.9
189
- signing_key:
218
+ rubygems_version: 3.0.3
219
+ signing_key:
190
220
  specification_version: 4
191
221
  summary: A health check gem implementation in ruby.
192
222
  test_files:
193
- - 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
223
+ - spec/dummy/Rakefile
224
+ - spec/dummy/app/assets/config/manifest.js
225
+ - spec/dummy/app/assets/stylesheets/application.css
226
+ - spec/dummy/app/channels/application_cable/channel.rb
227
+ - spec/dummy/app/channels/application_cable/connection.rb
198
228
  - spec/dummy/app/controllers/application_controller.rb
199
229
  - spec/dummy/app/controllers/home_controller.rb
230
+ - spec/dummy/app/javascript/packs/application.js
231
+ - spec/dummy/app/jobs/application_job.rb
232
+ - spec/dummy/app/mailers/application_mailer.rb
233
+ - spec/dummy/app/models/application_record.rb
200
234
  - spec/dummy/app/views/layouts/mailer.html.erb
201
235
  - 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
236
+ - spec/dummy/bin/rails
206
237
  - spec/dummy/bin/rake
207
238
  - spec/dummy/bin/setup
208
- - spec/dummy/bin/rails
209
- - spec/dummy/config/routes.rb
210
- - spec/dummy/config/locales/en.yml
239
+ - spec/dummy/config/application.rb
240
+ - spec/dummy/config/boot.rb
211
241
  - spec/dummy/config/cable.yml
212
- - spec/dummy/config/environments/production.rb
242
+ - spec/dummy/config/database.yml
243
+ - spec/dummy/config/environment.rb
213
244
  - spec/dummy/config/environments/development.rb
245
+ - spec/dummy/config/environments/production.rb
214
246
  - spec/dummy/config/environments/test.rb
215
- - spec/dummy/config/environment.rb
216
- - spec/dummy/config/storage.yml
217
- - spec/dummy/config/application.rb
218
- - spec/dummy/config/puma.rb
219
- - spec/dummy/config/database.yml
220
- - spec/dummy/config/boot.rb
221
247
  - spec/dummy/config/initializers/application_controller_renderer.rb
222
248
  - spec/dummy/config/initializers/backtrace_silencers.rb
223
- - spec/dummy/config/initializers/mime_types.rb
249
+ - spec/dummy/config/initializers/cors.rb
224
250
  - spec/dummy/config/initializers/filter_parameter_logging.rb
225
- - spec/dummy/config/initializers/wrap_parameters.rb
226
- - spec/dummy/config/initializers/redis.rb
227
251
  - spec/dummy/config/initializers/inflections.rb
228
- - spec/dummy/config/initializers/cors.rb
252
+ - spec/dummy/config/initializers/mime_types.rb
253
+ - spec/dummy/config/initializers/redis.rb
254
+ - spec/dummy/config/initializers/wrap_parameters.rb
255
+ - spec/dummy/config/locales/en.yml
256
+ - spec/dummy/config/puma.rb
257
+ - spec/dummy/config/routes.rb
258
+ - spec/dummy/config/storage.yml
229
259
  - spec/dummy/config.ru
230
- - spec/dummy/Rakefile
231
260
  - spec/dummy/db/schema.rb
232
- - spec/dummy/log/test.log
233
261
  - spec/dummy/log/development.log
234
- - spec/dummy/tmp/pids/server.pid
262
+ - spec/dummy/log/test.log
235
263
  - spec/dummy/tmp/development_secret.txt
236
- - spec/requests/health_check_spec.rb
264
+ - spec/dummy/tmp/pids/server.pid
237
265
  - spec/lib/hey_doctor/hey_doctor_spec.rb
238
266
  - spec/rails_helper.rb
267
+ - spec/requests/health_check_spec.rb
268
+ - spec/services/hey_doctor/check_application_health_service_spec.rb
239
269
  - spec/services/hey_doctor/check_database_health_service_spec.rb
240
270
  - spec/services/hey_doctor/check_redis_health_service_spec.rb
241
- - spec/services/hey_doctor/check_application_health_service_spec.rb
271
+ - spec/services/hey_doctor/check_sidekiq_health_service_spec.rb
272
+ - spec/spec_helper.rb