inst-jobs-statsd 2.1.0 → 3.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/lib/inst-jobs-statsd.rb +22 -18
  3. data/lib/inst_jobs_statsd/default_tracking.rb +3 -1
  4. data/lib/inst_jobs_statsd/ext/job.rb +13 -0
  5. data/lib/inst_jobs_statsd/jobs_tracker.rb +5 -1
  6. data/lib/inst_jobs_statsd/naming.rb +20 -25
  7. data/lib/inst_jobs_statsd/stats/counters/complete.rb +23 -0
  8. data/lib/inst_jobs_statsd/stats/counters/create.rb +23 -0
  9. data/lib/inst_jobs_statsd/stats/counters/run.rb +2 -0
  10. data/lib/inst_jobs_statsd/stats/counters.rb +2 -0
  11. data/lib/inst_jobs_statsd/stats/periodic/failed.rb +2 -0
  12. data/lib/inst_jobs_statsd/stats/periodic/queue.rb +3 -1
  13. data/lib/inst_jobs_statsd/stats/periodic/run.rb +3 -1
  14. data/lib/inst_jobs_statsd/stats/periodic.rb +6 -2
  15. data/lib/inst_jobs_statsd/stats/timing/failed.rb +2 -0
  16. data/lib/inst_jobs_statsd/stats/timing/perform.rb +2 -0
  17. data/lib/inst_jobs_statsd/stats/timing/pop.rb +2 -0
  18. data/lib/inst_jobs_statsd/stats/timing.rb +7 -3
  19. data/lib/inst_jobs_statsd/version.rb +3 -1
  20. metadata +89 -92
  21. data/lib/inst_jobs_statsd/stats/counters/failed.rb +0 -28
  22. data/spec/factories/jobs.rb +0 -9
  23. data/spec/factories/workers.rb +0 -9
  24. data/spec/gemfiles/42.gemfile +0 -8
  25. data/spec/gemfiles/51.gemfile +0 -8
  26. data/spec/gemfiles/60.gemfile +0 -7
  27. data/spec/inst_jobs_statsd/jobs_tracker_spec.rb +0 -29
  28. data/spec/inst_jobs_statsd/naming_spec.rb +0 -56
  29. data/spec/inst_jobs_statsd/stats/counters/failed_spec.rb +0 -20
  30. data/spec/inst_jobs_statsd/stats/counters/run_spec.rb +0 -27
  31. data/spec/inst_jobs_statsd/stats/periodic/failed_spec.rb +0 -31
  32. data/spec/inst_jobs_statsd/stats/periodic/queue_spec.rb +0 -95
  33. data/spec/inst_jobs_statsd/stats/periodic/run_spec.rb +0 -53
  34. data/spec/inst_jobs_statsd/stats/periodic_spec.rb +0 -63
  35. data/spec/inst_jobs_statsd/stats/timing/failed_spec.rb +0 -25
  36. data/spec/inst_jobs_statsd/stats/timing/perform_spec.rb +0 -35
  37. data/spec/inst_jobs_statsd/stats/timing/pop_spec.rb +0 -34
  38. data/spec/inst_jobs_statsd/stats/timing_spec.rb +0 -35
  39. data/spec/inst_statsd/default_tracking_spec.rb +0 -16
  40. data/spec/matchers.rb +0 -3
  41. data/spec/setup_test_db.rb +0 -49
  42. data/spec/spec_helper.rb +0 -61
metadata CHANGED
@@ -1,57 +1,51 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: inst-jobs-statsd
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 3.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeremy Slade
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-12-08 00:00:00.000000000 Z
11
+ date: 2023-10-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: inst-jobs
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '1.0'
19
+ version: 3.1.1
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: '3.0'
22
+ version: '4.0'
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
- - - ">"
27
+ - - ">="
28
28
  - !ruby/object:Gem::Version
29
- version: '1.0'
29
+ version: 3.1.1
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: '3.0'
32
+ version: '4.0'
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: inst_statsd
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
- - - ">="
38
- - !ruby/object:Gem::Version
39
- version: 2.1.2
40
- - - "<"
37
+ - - "~>"
41
38
  - !ruby/object:Gem::Version
42
39
  version: '3.0'
43
40
  type: :runtime
44
41
  prerelease: false
45
42
  version_requirements: !ruby/object:Gem::Requirement
46
43
  requirements:
47
- - - ">="
48
- - !ruby/object:Gem::Version
49
- version: 2.1.2
50
- - - "<"
44
+ - - "~>"
51
45
  - !ruby/object:Gem::Version
52
46
  version: '3.0'
53
47
  - !ruby/object:Gem::Dependency
54
- name: bump
48
+ name: bundler
55
49
  requirement: !ruby/object:Gem::Requirement
56
50
  requirements:
57
51
  - - ">="
@@ -65,21 +59,21 @@ dependencies:
65
59
  - !ruby/object:Gem::Version
66
60
  version: '0'
67
61
  - !ruby/object:Gem::Dependency
68
- name: bundler
62
+ name: database_cleaner
69
63
  requirement: !ruby/object:Gem::Requirement
70
64
  requirements:
71
- - - ">="
65
+ - - "~>"
72
66
  - !ruby/object:Gem::Version
73
- version: '0'
67
+ version: '2.0'
74
68
  type: :development
75
69
  prerelease: false
76
70
  version_requirements: !ruby/object:Gem::Requirement
77
71
  requirements:
78
- - - ">="
72
+ - - "~>"
79
73
  - !ruby/object:Gem::Version
80
- version: '0'
74
+ version: '2.0'
81
75
  - !ruby/object:Gem::Dependency
82
- name: byebug
76
+ name: debug
83
77
  requirement: !ruby/object:Gem::Requirement
84
78
  requirements:
85
79
  - - ">="
@@ -93,21 +87,7 @@ dependencies:
93
87
  - !ruby/object:Gem::Version
94
88
  version: '0'
95
89
  - !ruby/object:Gem::Dependency
96
- name: database_cleaner
97
- requirement: !ruby/object:Gem::Requirement
98
- requirements:
99
- - - "~>"
100
- - !ruby/object:Gem::Version
101
- version: '1.7'
102
- type: :development
103
- prerelease: false
104
- version_requirements: !ruby/object:Gem::Requirement
105
- requirements:
106
- - - "~>"
107
- - !ruby/object:Gem::Version
108
- version: '1.7'
109
- - !ruby/object:Gem::Dependency
110
- name: factory_girl
90
+ name: factory_bot
111
91
  requirement: !ruby/object:Gem::Requirement
112
92
  requirements:
113
93
  - - ">="
@@ -177,19 +157,75 @@ dependencies:
177
157
  - !ruby/object:Gem::Version
178
158
  version: '3.9'
179
159
  - !ruby/object:Gem::Dependency
180
- name: rubocop
160
+ name: rubocop-factory_bot
161
+ requirement: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - "~>"
164
+ - !ruby/object:Gem::Version
165
+ version: '2.24'
166
+ type: :development
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - "~>"
171
+ - !ruby/object:Gem::Version
172
+ version: '2.24'
173
+ - !ruby/object:Gem::Dependency
174
+ name: rubocop-inst
175
+ requirement: !ruby/object:Gem::Requirement
176
+ requirements:
177
+ - - "~>"
178
+ - !ruby/object:Gem::Version
179
+ version: '1.0'
180
+ type: :development
181
+ prerelease: false
182
+ version_requirements: !ruby/object:Gem::Requirement
183
+ requirements:
184
+ - - "~>"
185
+ - !ruby/object:Gem::Version
186
+ version: '1.0'
187
+ - !ruby/object:Gem::Dependency
188
+ name: rubocop-rails
189
+ requirement: !ruby/object:Gem::Requirement
190
+ requirements:
191
+ - - "~>"
192
+ - !ruby/object:Gem::Version
193
+ version: '2.21'
194
+ type: :development
195
+ prerelease: false
196
+ version_requirements: !ruby/object:Gem::Requirement
197
+ requirements:
198
+ - - "~>"
199
+ - !ruby/object:Gem::Version
200
+ version: '2.21'
201
+ - !ruby/object:Gem::Dependency
202
+ name: rubocop-rake
203
+ requirement: !ruby/object:Gem::Requirement
204
+ requirements:
205
+ - - "~>"
206
+ - !ruby/object:Gem::Version
207
+ version: '0.6'
208
+ type: :development
209
+ prerelease: false
210
+ version_requirements: !ruby/object:Gem::Requirement
211
+ requirements:
212
+ - - "~>"
213
+ - !ruby/object:Gem::Version
214
+ version: '0.6'
215
+ - !ruby/object:Gem::Dependency
216
+ name: rubocop-rspec
181
217
  requirement: !ruby/object:Gem::Requirement
182
218
  requirements:
183
219
  - - "~>"
184
220
  - !ruby/object:Gem::Version
185
- version: 0.48.0
221
+ version: '2.24'
186
222
  type: :development
187
223
  prerelease: false
188
224
  version_requirements: !ruby/object:Gem::Requirement
189
225
  requirements:
190
226
  - - "~>"
191
227
  - !ruby/object:Gem::Version
192
- version: 0.48.0
228
+ version: '2.24'
193
229
  - !ruby/object:Gem::Dependency
194
230
  name: simplecov
195
231
  requirement: !ruby/object:Gem::Requirement
@@ -232,7 +268,7 @@ dependencies:
232
268
  - - "~>"
233
269
  - !ruby/object:Gem::Version
234
270
  version: 1.4.0
235
- description:
271
+ description:
236
272
  email:
237
273
  - jslade@instructure.com
238
274
  executables: []
@@ -241,10 +277,12 @@ extra_rdoc_files: []
241
277
  files:
242
278
  - lib/inst-jobs-statsd.rb
243
279
  - lib/inst_jobs_statsd/default_tracking.rb
280
+ - lib/inst_jobs_statsd/ext/job.rb
244
281
  - lib/inst_jobs_statsd/jobs_tracker.rb
245
282
  - lib/inst_jobs_statsd/naming.rb
246
283
  - lib/inst_jobs_statsd/stats/counters.rb
247
- - lib/inst_jobs_statsd/stats/counters/failed.rb
284
+ - lib/inst_jobs_statsd/stats/counters/complete.rb
285
+ - lib/inst_jobs_statsd/stats/counters/create.rb
248
286
  - lib/inst_jobs_statsd/stats/counters/run.rb
249
287
  - lib/inst_jobs_statsd/stats/periodic.rb
250
288
  - lib/inst_jobs_statsd/stats/periodic/failed.rb
@@ -255,32 +293,12 @@ files:
255
293
  - lib/inst_jobs_statsd/stats/timing/perform.rb
256
294
  - lib/inst_jobs_statsd/stats/timing/pop.rb
257
295
  - lib/inst_jobs_statsd/version.rb
258
- - spec/factories/jobs.rb
259
- - spec/factories/workers.rb
260
- - spec/gemfiles/42.gemfile
261
- - spec/gemfiles/51.gemfile
262
- - spec/gemfiles/60.gemfile
263
- - spec/inst_jobs_statsd/jobs_tracker_spec.rb
264
- - spec/inst_jobs_statsd/naming_spec.rb
265
- - spec/inst_jobs_statsd/stats/counters/failed_spec.rb
266
- - spec/inst_jobs_statsd/stats/counters/run_spec.rb
267
- - spec/inst_jobs_statsd/stats/periodic/failed_spec.rb
268
- - spec/inst_jobs_statsd/stats/periodic/queue_spec.rb
269
- - spec/inst_jobs_statsd/stats/periodic/run_spec.rb
270
- - spec/inst_jobs_statsd/stats/periodic_spec.rb
271
- - spec/inst_jobs_statsd/stats/timing/failed_spec.rb
272
- - spec/inst_jobs_statsd/stats/timing/perform_spec.rb
273
- - spec/inst_jobs_statsd/stats/timing/pop_spec.rb
274
- - spec/inst_jobs_statsd/stats/timing_spec.rb
275
- - spec/inst_statsd/default_tracking_spec.rb
276
- - spec/matchers.rb
277
- - spec/setup_test_db.rb
278
- - spec/spec_helper.rb
279
296
  homepage: https://github.com/instructure/inst-jobs-statsd
280
297
  licenses:
281
298
  - MIT
282
- metadata: {}
283
- post_install_message:
299
+ metadata:
300
+ rubygems_mfa_required: 'true'
301
+ post_install_message:
284
302
  rdoc_options: []
285
303
  require_paths:
286
304
  - lib
@@ -288,36 +306,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
288
306
  requirements:
289
307
  - - ">="
290
308
  - !ruby/object:Gem::Version
291
- version: '2.4'
309
+ version: '2.7'
292
310
  required_rubygems_version: !ruby/object:Gem::Requirement
293
311
  requirements:
294
312
  - - ">="
295
313
  - !ruby/object:Gem::Version
296
314
  version: '0'
297
315
  requirements: []
298
- rubygems_version: 3.0.3
299
- signing_key:
316
+ rubygems_version: 3.4.19
317
+ signing_key:
300
318
  specification_version: 4
301
319
  summary: Stats reporting for inst-jobs
302
- test_files:
303
- - spec/inst_jobs_statsd/naming_spec.rb
304
- - spec/inst_jobs_statsd/stats/periodic/failed_spec.rb
305
- - spec/inst_jobs_statsd/stats/periodic/run_spec.rb
306
- - spec/inst_jobs_statsd/stats/periodic/queue_spec.rb
307
- - spec/inst_jobs_statsd/stats/timing/failed_spec.rb
308
- - spec/inst_jobs_statsd/stats/timing/pop_spec.rb
309
- - spec/inst_jobs_statsd/stats/timing/perform_spec.rb
310
- - spec/inst_jobs_statsd/stats/periodic_spec.rb
311
- - spec/inst_jobs_statsd/stats/counters/failed_spec.rb
312
- - spec/inst_jobs_statsd/stats/counters/run_spec.rb
313
- - spec/inst_jobs_statsd/stats/timing_spec.rb
314
- - spec/inst_jobs_statsd/jobs_tracker_spec.rb
315
- - spec/spec_helper.rb
316
- - spec/setup_test_db.rb
317
- - spec/matchers.rb
318
- - spec/gemfiles/60.gemfile
319
- - spec/gemfiles/42.gemfile
320
- - spec/gemfiles/51.gemfile
321
- - spec/factories/workers.rb
322
- - spec/factories/jobs.rb
323
- - spec/inst_statsd/default_tracking_spec.rb
320
+ test_files: []
@@ -1,28 +0,0 @@
1
- module InstJobsStatsd
2
- module Stats
3
- module Counters
4
- module Failed
5
- def self.enable
6
- enable_failed_count
7
- end
8
-
9
- def self.enable_failed_count
10
- return if Delayed::Job::Failed < AfterCreateHook
11
- Delayed::Job::Failed.include AfterCreateHook
12
- end
13
-
14
- module AfterCreateHook
15
- def self.included(base)
16
- base.after_create do
17
- InstJobsStatsd::Stats::Counters::Failed.report_failed_count(self)
18
- end
19
- end
20
- end
21
-
22
- def self.report_failed_count(job)
23
- Counters.report_count(:failed, 1, job: job)
24
- end
25
- end
26
- end
27
- end
28
- end
@@ -1,9 +0,0 @@
1
- FactoryGirl.define do
2
- class JobFixture
3
- attr_accessor :tag, :run_at, :strand
4
- end
5
-
6
- factory :job_fixture, aliases: [:job] do
7
- tag 'Test::Job.perform'
8
- end
9
- end
@@ -1,9 +0,0 @@
1
- FactoryGirl.define do
2
- class WorkerFixture
3
- attr_accessor :name
4
- end
5
-
6
- factory :worker_fixture, aliases: [:worker] do
7
- sequence(:name) { |n| "worker-#{n}" }
8
- end
9
- end
@@ -1,8 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- gemspec :path=>"../../"
4
-
5
- gem "rails", "~> 4.2.11"
6
- gem "pg", "~> 0.21.0"
7
- gem "after_transaction_commit", "< 2"
8
- gem "test_after_commit", "1.1.0"
@@ -1,8 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- gemspec :path=>"../../"
4
-
5
- gem "rails", "~> 5.1.7"
6
- gem "sinatra", "~> 2.0.8"
7
- gem "sinatra-contrib", "~> 2.0.8"
8
- gem "sprockets", "~> 3.7" # 4.0+ requires Ruby 2.5
@@ -1,7 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- gemspec :path=>"../../"
4
-
5
- gem "rails", "~> 6.0"
6
- gem "sinatra", "~> 2.0.8"
7
- gem "sinatra-contrib", "~> 2.0.8"
@@ -1,29 +0,0 @@
1
- RSpec.describe InstJobsStatsd::JobsTracker do
2
- describe '.track' do
3
- it 'calls the block' do
4
- @done_in_block = false
5
- expect do
6
- InstJobsStatsd::JobsTracker.track do
7
- @done_in_block = true
8
- end
9
- end.to(change { @done_in_block })
10
- end
11
- end
12
-
13
- describe '.initialize' do
14
- it 'enables everything' do
15
- expect(InstJobsStatsd::Stats::Counters::Failed).to receive(:enable)
16
- expect(InstJobsStatsd::Stats::Counters::Run).to receive(:enable)
17
-
18
- expect(InstJobsStatsd::Stats::Periodic::Failed).to receive(:enable)
19
- expect(InstJobsStatsd::Stats::Periodic::Queue).to receive(:enable)
20
- expect(InstJobsStatsd::Stats::Periodic::Run).to receive(:enable)
21
-
22
- expect(InstJobsStatsd::Stats::Timing::Failed).to receive(:enable)
23
- expect(InstJobsStatsd::Stats::Timing::Perform).to receive(:enable)
24
- expect(InstJobsStatsd::Stats::Timing::Pop).to receive(:enable)
25
-
26
- InstJobsStatsd::JobsTracker.new
27
- end
28
- end
29
- end
@@ -1,56 +0,0 @@
1
- RSpec.describe InstJobsStatsd::Naming do
2
- describe '.qualified_names' do
3
- subject { InstJobsStatsd::Naming.qualified_names(stat_name, job) }
4
- let(:stat_name) { :wut }
5
-
6
- context 'when no job is given' do
7
- let(:job) { nil }
8
- it { should eq ['delayedjob.wut'] }
9
- end
10
-
11
- context 'when job is given' do
12
- let(:job) { build :job }
13
- it { should include 'delayedjob.wut.tag.Test-Job.perform' }
14
-
15
- context 'job tag is unusual' do
16
- let(:job) { build :job, tag: 'periodic__Something_on_a_schedule' }
17
- it { should include 'delayedjob.wut.tag.periodic__Something_on_a_schedule' }
18
- end
19
-
20
- context 'job tag is dynamic' do
21
- let(:job) { build :job, tag: '<Class:0x00000004f575b8>#perform' }
22
- it { should eq ['delayedjob.wut'] }
23
- end
24
- end
25
-
26
- context 'with region tags' do
27
- before do
28
- @jobs_namespace = ENV['INST_JOBS_STATSD_NAMESPACE']
29
- ENV['INST_JOBS_STATSD_NAMESPACE'] = 'region_name'
30
- end
31
-
32
- after do
33
- ENV['INST_JOBS_STATSD_NAMESPACE'] = @jobs_namespace
34
- end
35
-
36
- let(:job) { build :job, tag: 'a_tag_name' }
37
-
38
- it { should include 'delayedjob.wut' }
39
- it { should include 'delayedjob.wut.tag.a_tag_name' }
40
- it { should include 'delayedjob.wut.region_name' }
41
- it { should include 'delayedjob.wut.region_name.tag.a_tag_name' }
42
- end
43
-
44
- describe '.dd_job_tags' do
45
- it 'works' do
46
- job = double(tag: 'Account.run_reports_later', shard: double(id: 101), strand: 'special')
47
- expect(InstJobsStatsd::Naming.dd_job_tags(job)).to eq({ tag: 'Account.run_reports_later', jobshard: 101})
48
- end
49
-
50
- it 'properly munges job tags' do
51
- job = double(tag: 'Quizzes::Quiz#do_something', strand: nil)
52
- expect(InstJobsStatsd::Naming.dd_job_tags(job)).to eq({ tag: 'Quizzes-Quiz.do_something'})
53
- end
54
- end
55
- end
56
- end
@@ -1,20 +0,0 @@
1
- RSpec.describe InstJobsStatsd::Stats::Counters::Failed do
2
- describe '.enable' do
3
- it 'enables all the things' do
4
- expect(InstJobsStatsd::Stats::Counters::Failed).to receive(:enable_failed_count)
5
- InstJobsStatsd::Stats::Counters::Failed.enable
6
- end
7
- end
8
-
9
- describe '.report_failed_count' do
10
- let(:x) { Struct.new(:perform).new(true) }
11
- it do
12
- expect(InstStatsd::Statsd).to receive(:count)
13
- .with(array_including(/\.failed$/), 1, 1, { short_stat: :failed, tags: {} })
14
-
15
- InstJobsStatsd::Stats::Counters::Failed.enable_failed_count
16
- x.delay.perform
17
- Delayed::Job.first.fail!
18
- end
19
- end
20
- end
@@ -1,27 +0,0 @@
1
- RSpec.describe InstJobsStatsd::Stats::Counters::Run do
2
- describe '.enable' do
3
- it 'enables all the things' do
4
- expect(InstJobsStatsd::Stats::Counters::Run).to receive(:enable_run_count)
5
- InstJobsStatsd::Stats::Counters::Run.enable
6
- end
7
- end
8
-
9
- describe '.report_run_count' do
10
- let(:x) { Struct.new(:perform).new(true) }
11
-
12
- before do
13
- Delayed::Worker.lifecycle.reset!
14
- InstJobsStatsd::Stats::Counters::Run.enable
15
-
16
- 2.times { x.delay.perform }
17
- end
18
-
19
- it do
20
- expect(InstStatsd::Statsd).to receive(:count)
21
- .twice.with(array_including(/\.run$/), 1, 1, { short_stat: anything, tags: {} })
22
- Delayed::Job.all.each do |job|
23
- Delayed::Worker.lifecycle.run_callbacks(:perform, {}, job) {}
24
- end
25
- end
26
- end
27
- end
@@ -1,31 +0,0 @@
1
- RSpec.describe InstJobsStatsd::Stats::Periodic::Failed do
2
- before do
3
- InstJobsStatsd::Stats::Periodic.instance_variable_set(:@instance, nil)
4
- end
5
-
6
- describe '.enable' do
7
- it 'enables all the things' do
8
- expect(InstJobsStatsd::Stats::Periodic::Failed).to receive(:enable_failed_depth)
9
- InstJobsStatsd::Stats::Periodic::Failed.enable
10
- end
11
- end
12
-
13
- describe '.report_failed_depth' do
14
- let(:x) { Struct.new(:perform).new(true) }
15
- let(:now) { Delayed::Job.db_time_now }
16
-
17
- before do
18
- InstJobsStatsd::Stats::Periodic.enable_callbacks
19
- InstJobsStatsd::Stats::Periodic::Failed.enable_failed_depth
20
-
21
- x.delay.perform
22
- Delayed::Job.first.fail!
23
- end
24
-
25
- it do
26
- expect(InstStatsd::Statsd).to receive(:gauge)
27
- .with(array_including(/\.failed_depth$/), 1, 1, { short_stat: anything, tags: {} })
28
- InstJobsStatsd::Stats::Periodic::Failed.report_failed_depth
29
- end
30
- end
31
- end
@@ -1,95 +0,0 @@
1
- RSpec.describe InstJobsStatsd::Stats::Periodic::Queue do
2
- before do
3
- InstJobsStatsd::Stats::Periodic.instance_variable_set(:@instance, nil)
4
- end
5
-
6
- describe '.enable' do
7
- it 'enables all the things' do
8
- expect(InstJobsStatsd::Stats::Periodic::Queue).to receive(:enable_queue_depth)
9
- expect(InstJobsStatsd::Stats::Periodic::Queue).to receive(:enable_queue_age)
10
- InstJobsStatsd::Stats::Periodic::Queue.enable
11
- end
12
- end
13
-
14
- describe '.report_queue_depth' do
15
- let(:x) { Struct.new(:perform).new(true) }
16
- let(:now) { Delayed::Job.db_time_now }
17
-
18
- before do
19
- InstJobsStatsd::Stats::Periodic::Queue.enable_queue_depth
20
-
21
- x.delay.perform
22
- Delayed::Job.first.update(locked_at: Delayed::Job.db_time_now, locked_by: 'test')
23
-
24
- x.delay.perform
25
- x.delay(run_at: now + 1.minute).perform
26
- x.delay(run_at: now + 10.minutes).perform
27
- end
28
-
29
- it do
30
- expect(InstStatsd::Statsd).to receive(:gauge)
31
- .with(array_including(/\.queue_depth$/), 1, 1, { short_stat: anything, tags: {} })
32
- InstJobsStatsd::Stats::Periodic::Queue.report_queue_depth
33
- end
34
-
35
- it do
36
- expect(InstStatsd::Statsd).to receive(:gauge)
37
- .with(array_including(/\.queue_depth$/), 2, 1, { short_stat: anything, tags: {} })
38
- Timecop.freeze(2.minutes.from_now) do
39
- InstJobsStatsd::Stats::Periodic::Queue.report_queue_depth
40
- end
41
- end
42
-
43
- it do
44
- expect(InstStatsd::Statsd).to receive(:gauge)
45
- .with(array_including(/\.queue_depth$/), 3, 1, { short_stat: anything, tags: {} })
46
- Timecop.freeze(20.minutes.from_now) do
47
- InstJobsStatsd::Stats::Periodic::Queue.report_queue_depth
48
- end
49
- end
50
- end
51
-
52
- describe '.report_queue_age' do
53
- let(:x) { Struct.new(:perform).new(true) }
54
- let(:now) { Delayed::Job.db_time_now }
55
-
56
- before do
57
- InstJobsStatsd::Stats::Periodic::Queue.enable_queue_age
58
-
59
- x.delay.perform
60
- Delayed::Job.first.update(locked_at: Delayed::Job.db_time_now, locked_by: 'test')
61
-
62
- x.delay.perform
63
- x.delay(run_at: now + 1.minute).perform
64
- x.delay(run_at: now + 10.minutes).perform
65
- end
66
-
67
- it do
68
- expect(InstStatsd::Statsd).to receive(:gauge)
69
- .ordered.with(array_including(/\.queue_age_total$/), number_near(0), 1, { short_stat: anything, tags: {} })
70
- expect(InstStatsd::Statsd).to receive(:gauge)
71
- .ordered.with(array_including(/\.queue_age_max$/), number_near(0), 1, { short_stat: anything, tags: {} })
72
- InstJobsStatsd::Stats::Periodic::Queue.report_queue_age
73
- end
74
-
75
- it do
76
- expect(InstStatsd::Statsd).to receive(:gauge)
77
- .ordered.with(array_including(/\.queue_age_total$/), number_near(180), 1, { short_stat: anything, tags: {} })
78
- expect(InstStatsd::Statsd).to receive(:gauge)
79
- .ordered.with(array_including(/\.queue_age_max$/), number_near(120), 1, { short_stat: anything, tags: {} })
80
- Timecop.freeze(2.minutes.from_now) do
81
- InstJobsStatsd::Stats::Periodic::Queue.report_queue_age
82
- end
83
- end
84
-
85
- it do
86
- expect(InstStatsd::Statsd).to receive(:gauge)
87
- .ordered.with(array_including(/\.queue_age_total$/), number_near(2940), 1, { short_stat: anything, tags: {} })
88
- expect(InstStatsd::Statsd).to receive(:gauge)
89
- .ordered.with(array_including(/\.queue_age_max$/), number_near(1200), 1, { short_stat: anything, tags: {} })
90
- Timecop.freeze(20.minutes.from_now) do
91
- InstJobsStatsd::Stats::Periodic::Queue.report_queue_age
92
- end
93
- end
94
- end
95
- end