inst-jobs-statsd 1.2.3 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b3de8c2ebb6a0209eece2b69f072091c760908020c2957334e34303dcf209305
4
- data.tar.gz: 5fb37614c812c728b8448f447597d1b4b6d9c7f6856cdb5052ea36ea3d47cb40
3
+ metadata.gz: 792432d5ab16fd1e7cbf711085bb9067ff8e299526d2bd4be44fd35422d121a0
4
+ data.tar.gz: 3f1d439fc92c9dc54cea4001f56cce26c88bdc14b61cdf5c364b9f819dc9750c
5
5
  SHA512:
6
- metadata.gz: 912a311942077658bed03600aa01cc2c5fd114ec381a04b38173a1573d1c956f5a76fdebdc2ff5b26707fe1ba4b0039748b225ce4647c7b0291849dbd8d7f980
7
- data.tar.gz: e1ee70af317c0a531fb005be42541b5cb4a1813afa5d1d275314eb7bd1873e00edd07989fa546453b86786034952f01cdb5eeeed77272e79d404b34afe007170
6
+ metadata.gz: b4bfd22211bcec84a9caf210a68081b8a002a0011c1d9b232b4b4f0cd638506c98f601afce2f29274285761954fcab2ca143844cc195915f8b48d66376658639
7
+ data.tar.gz: 2113f8a57bfcb288688326f1f1569524a661998999ab85e5567289010b9c3a8ababd6648a375560218b9654a66525d9ffb995f1fa96d48c5f441bf740cc8ca7a
@@ -10,7 +10,6 @@ require_relative 'inst_jobs_statsd/naming'
10
10
 
11
11
  require_relative 'inst_jobs_statsd/stats/counters'
12
12
  require_relative 'inst_jobs_statsd/stats/counters/failed'
13
- require_relative 'inst_jobs_statsd/stats/counters/orphaned'
14
13
  require_relative 'inst_jobs_statsd/stats/counters/run'
15
14
 
16
15
  require_relative 'inst_jobs_statsd/stats/periodic'
@@ -7,8 +7,8 @@ module InstJobsStatsd
7
7
  end
8
8
 
9
9
  module ClassMethods
10
- def track_jobs
11
- @jobs_tracker ||= JobsTracker.new
10
+ def track_jobs(enable_periodic_queries: true)
11
+ @jobs_tracker ||= JobsTracker.new(enable_periodic_queries: enable_periodic_queries)
12
12
  end
13
13
  end
14
14
  end
@@ -1,21 +1,22 @@
1
1
  module InstJobsStatsd
2
2
  class JobsTracker
3
- def self.track
4
- @current_tracking = new
3
+ def self.track(enable_periodic_queries: true)
4
+ @current_tracking = new(enable_periodic_queries: enable_periodic_queries)
5
5
  yield
6
6
  tracking = @current_tracking
7
7
  @current_tracking = nil
8
8
  tracking
9
9
  end
10
10
 
11
- def initialize
11
+ def initialize(enable_periodic_queries: true)
12
12
  Stats::Counters::Failed.enable
13
- Stats::Counters::Orphaned.enable
14
13
  Stats::Counters::Run.enable
15
14
 
16
- Stats::Periodic::Failed.enable
17
- Stats::Periodic::Queue.enable
18
- Stats::Periodic::Run.enable
15
+ if enable_periodic_queries
16
+ Stats::Periodic::Failed.enable
17
+ Stats::Periodic::Queue.enable
18
+ Stats::Periodic::Run.enable
19
+ end
19
20
 
20
21
  Stats::Timing::Failed.enable
21
22
  Stats::Timing::Perform.enable
@@ -45,6 +45,7 @@ module InstJobsStatsd
45
45
  tag = obj_tag
46
46
  tag = [obj_tag, method_tag].join('.') if method_tag.present?
47
47
  tags[:tag] = tag
48
+ tags
48
49
  end
49
50
 
50
51
  def self.custom_tags(job, tags)
@@ -1,3 +1,3 @@
1
1
  module InstJobsStatsd
2
- VERSION = '1.2.3'.freeze
2
+ VERSION = '2.0.0'.freeze
3
3
  end
@@ -2,6 +2,7 @@ source "https://rubygems.org"
2
2
 
3
3
  gemspec :path=>"../../"
4
4
 
5
- gem "rails", "~> 4.2.5"
6
- gem "after_transaction_commit", "<2"
7
- gem 'test_after_commit', '0.4.1'
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"
@@ -2,6 +2,7 @@ source "https://rubygems.org"
2
2
 
3
3
  gemspec :path=>"../../"
4
4
 
5
- gem "rails", "~> 5.1.0"
6
- gem 'sinatra', "2.0.0.beta2"
7
- gem 'sinatra-contrib', "2.0.0.beta2"
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
@@ -0,0 +1,7 @@
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"
@@ -13,7 +13,6 @@ RSpec.describe InstJobsStatsd::JobsTracker do
13
13
  describe '.initialize' do
14
14
  it 'enables everything' do
15
15
  expect(InstJobsStatsd::Stats::Counters::Failed).to receive(:enable)
16
- expect(InstJobsStatsd::Stats::Counters::Orphaned).to receive(:enable)
17
16
  expect(InstJobsStatsd::Stats::Counters::Run).to receive(:enable)
18
17
 
19
18
  expect(InstJobsStatsd::Stats::Periodic::Failed).to receive(:enable)
@@ -40,5 +40,17 @@ RSpec.describe InstJobsStatsd::Naming do
40
40
  it { should include 'delayedjob.wut.region_name' }
41
41
  it { should include 'delayedjob.wut.region_name.tag.a_tag_name' }
42
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
43
55
  end
44
56
  end
@@ -13,7 +13,7 @@ RSpec.describe InstJobsStatsd::Stats::Counters::Failed do
13
13
  .with(array_including(/\.failed$/), 1, 1, { short_stat: :failed, tags: {} })
14
14
 
15
15
  InstJobsStatsd::Stats::Counters::Failed.enable_failed_count
16
- x.send_later(:perform)
16
+ x.delay.perform
17
17
  Delayed::Job.first.fail!
18
18
  end
19
19
  end
@@ -13,7 +13,7 @@ RSpec.describe InstJobsStatsd::Stats::Counters::Run do
13
13
  Delayed::Worker.lifecycle.reset!
14
14
  InstJobsStatsd::Stats::Counters::Run.enable
15
15
 
16
- 2.times { x.send_later(:perform) }
16
+ 2.times { x.delay.perform }
17
17
  end
18
18
 
19
19
  it do
@@ -18,7 +18,7 @@ RSpec.describe InstJobsStatsd::Stats::Periodic::Failed do
18
18
  InstJobsStatsd::Stats::Periodic.enable_callbacks
19
19
  InstJobsStatsd::Stats::Periodic::Failed.enable_failed_depth
20
20
 
21
- x.send_later(:perform)
21
+ x.delay.perform
22
22
  Delayed::Job.first.fail!
23
23
  end
24
24
 
@@ -18,12 +18,12 @@ RSpec.describe InstJobsStatsd::Stats::Periodic::Queue do
18
18
  before do
19
19
  InstJobsStatsd::Stats::Periodic::Queue.enable_queue_depth
20
20
 
21
- x.send_later(:perform)
21
+ x.delay.perform
22
22
  Delayed::Job.first.update(locked_at: Delayed::Job.db_time_now, locked_by: 'test')
23
23
 
24
- x.send_later(:perform)
25
- x.send_later_enqueue_args(:perform, run_at: now + 1.minute)
26
- x.send_later_enqueue_args(:perform, run_at: now + 10.minutes)
24
+ x.delay.perform
25
+ x.delay(run_at: now + 1.minute).perform
26
+ x.delay(run_at: now + 10.minutes).perform
27
27
  end
28
28
 
29
29
  it do
@@ -56,12 +56,12 @@ RSpec.describe InstJobsStatsd::Stats::Periodic::Queue do
56
56
  before do
57
57
  InstJobsStatsd::Stats::Periodic::Queue.enable_queue_age
58
58
 
59
- x.send_later(:perform)
59
+ x.delay.perform
60
60
  Delayed::Job.first.update(locked_at: Delayed::Job.db_time_now, locked_by: 'test')
61
61
 
62
- x.send_later(:perform)
63
- x.send_later_enqueue_args(:perform, run_at: now + 1.minute)
64
- x.send_later_enqueue_args(:perform, run_at: now + 10.minutes)
62
+ x.delay.perform
63
+ x.delay(run_at: now + 1.minute).perform
64
+ x.delay(run_at: now + 10.minutes).perform
65
65
  end
66
66
 
67
67
  it do
@@ -18,8 +18,8 @@ RSpec.describe InstJobsStatsd::Stats::Periodic::Run do
18
18
  before do
19
19
  InstJobsStatsd::Stats::Periodic::Run.enable_run_depth
20
20
 
21
- x.send_later(:perform)
22
- x.send_later(:perform)
21
+ x.delay.perform
22
+ x.delay.perform
23
23
  Delayed::Job.first.update(locked_at: Delayed::Job.db_time_now, locked_by: 'test')
24
24
  end
25
25
 
@@ -37,8 +37,8 @@ RSpec.describe InstJobsStatsd::Stats::Periodic::Run do
37
37
  before do
38
38
  InstJobsStatsd::Stats::Periodic::Run.enable_run_age
39
39
 
40
- x.send_later(:perform)
41
- x.send_later(:perform)
40
+ x.delay.perform
41
+ x.delay.perform
42
42
  Delayed::Job.first.update(locked_at: now, locked_by: 'test')
43
43
  end
44
44
 
@@ -35,7 +35,15 @@ ActiveRecord::Base.establish_connection(connection_config)
35
35
 
36
36
  # Apply the migrations from the inst-jobs gem
37
37
  inst_jobs_spec = Gem::Specification.find_by_name('inst-jobs')
38
- ActiveRecord::Migrator.migrate(inst_jobs_spec.gem_dir + '/db/migrate')
39
- ActiveRecord::Migrator.migrate(inst_jobs_spec.gem_dir + '/spec/migrate')
38
+ if ::Rails.version >= '6'
39
+ sm = ActiveRecord::Base.connection.schema_migration
40
+ migrations = ActiveRecord::MigrationContext.new(inst_jobs_spec.gem_dir + '/db/migrate', sm).migrations
41
+ ActiveRecord::Migrator.new(:up, migrations, sm).migrate
42
+ migrations = ActiveRecord::MigrationContext.new(inst_jobs_spec.gem_dir + '/spec/migrate', sm).migrations
43
+ ActiveRecord::Migrator.new(:up, migrations, sm).migrate
44
+ else
45
+ ActiveRecord::Migrator.migrate(inst_jobs_spec.gem_dir + '/db/migrate')
46
+ ActiveRecord::Migrator.migrate(inst_jobs_spec.gem_dir + '/spec/migrate')
47
+ end
40
48
  Delayed::Backend::ActiveRecord::Job.reset_column_information
41
49
  Delayed::Backend::ActiveRecord::Job::Failed.reset_column_information
@@ -1,4 +1,4 @@
1
- if /^2\.4/ =~ RUBY_VERSION && /50\./ =~ ENV['BUNDLE_GEMFILE'] # Limit coverage to one build
1
+ if /^2\.7/ =~ RUBY_VERSION && /51\./ =~ ENV['BUNDLE_GEMFILE'] # Limit coverage to one build
2
2
  require 'simplecov'
3
3
 
4
4
  SimpleCov.start do
@@ -6,8 +6,6 @@ if /^2\.4/ =~ RUBY_VERSION && /50\./ =~ ENV['BUNDLE_GEMFILE'] # Limit coverage t
6
6
  add_filter 'spec'
7
7
  track_files 'lib/**/*.rb'
8
8
  end
9
-
10
- SimpleCov.minimum_coverage(100)
11
9
  end
12
10
 
13
11
  require 'inst-jobs-statsd'
metadata CHANGED
@@ -1,35 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: inst-jobs-statsd
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.3
4
+ version: 2.0.0
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: 2019-03-25 00:00:00.000000000 Z
11
+ date: 2020-10-26 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
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: '0.13'
20
- - - "<"
17
+ - - "~>"
21
18
  - !ruby/object:Gem::Version
22
- version: '0.16'
19
+ version: '1.0'
23
20
  type: :runtime
24
21
  prerelease: false
25
22
  version_requirements: !ruby/object:Gem::Requirement
26
23
  requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- version: '0.13'
30
- - - "<"
24
+ - - "~>"
31
25
  - !ruby/object:Gem::Version
32
- version: '0.16'
26
+ version: '1.0'
33
27
  - !ruby/object:Gem::Dependency
34
28
  name: inst_statsd
35
29
  requirement: !ruby/object:Gem::Requirement
@@ -96,16 +90,16 @@ dependencies:
96
90
  name: database_cleaner
97
91
  requirement: !ruby/object:Gem::Requirement
98
92
  requirements:
99
- - - '='
93
+ - - "~>"
100
94
  - !ruby/object:Gem::Version
101
- version: 1.6.1
95
+ version: '1.7'
102
96
  type: :development
103
97
  prerelease: false
104
98
  version_requirements: !ruby/object:Gem::Requirement
105
99
  requirements:
106
- - - '='
100
+ - - "~>"
107
101
  - !ruby/object:Gem::Version
108
- version: 1.6.1
102
+ version: '1.7'
109
103
  - !ruby/object:Gem::Dependency
110
104
  name: factory_girl
111
105
  requirement: !ruby/object:Gem::Requirement
@@ -124,16 +118,16 @@ dependencies:
124
118
  name: pg
125
119
  requirement: !ruby/object:Gem::Requirement
126
120
  requirements:
127
- - - '='
121
+ - - "~>"
128
122
  - !ruby/object:Gem::Version
129
- version: 0.21.0
123
+ version: '1.2'
130
124
  type: :development
131
125
  prerelease: false
132
126
  version_requirements: !ruby/object:Gem::Requirement
133
127
  requirements:
134
- - - '='
128
+ - - "~>"
135
129
  - !ruby/object:Gem::Version
136
- version: 0.21.0
130
+ version: '1.2'
137
131
  - !ruby/object:Gem::Dependency
138
132
  name: pry
139
133
  requirement: !ruby/object:Gem::Requirement
@@ -166,44 +160,44 @@ dependencies:
166
160
  name: rspec
167
161
  requirement: !ruby/object:Gem::Requirement
168
162
  requirements:
169
- - - '='
163
+ - - "~>"
170
164
  - !ruby/object:Gem::Version
171
- version: 3.4.0
165
+ version: '3.9'
172
166
  type: :development
173
167
  prerelease: false
174
168
  version_requirements: !ruby/object:Gem::Requirement
175
169
  requirements:
176
- - - '='
170
+ - - "~>"
177
171
  - !ruby/object:Gem::Version
178
- version: 3.4.0
172
+ version: '3.9'
179
173
  - !ruby/object:Gem::Dependency
180
174
  name: rubocop
181
175
  requirement: !ruby/object:Gem::Requirement
182
176
  requirements:
183
177
  - - "~>"
184
178
  - !ruby/object:Gem::Version
185
- version: '0'
179
+ version: 0.48.0
186
180
  type: :development
187
181
  prerelease: false
188
182
  version_requirements: !ruby/object:Gem::Requirement
189
183
  requirements:
190
184
  - - "~>"
191
185
  - !ruby/object:Gem::Version
192
- version: '0'
186
+ version: 0.48.0
193
187
  - !ruby/object:Gem::Dependency
194
188
  name: simplecov
195
189
  requirement: !ruby/object:Gem::Requirement
196
190
  requirements:
197
191
  - - "~>"
198
192
  - !ruby/object:Gem::Version
199
- version: '0.14'
193
+ version: '0.17'
200
194
  type: :development
201
195
  prerelease: false
202
196
  version_requirements: !ruby/object:Gem::Requirement
203
197
  requirements:
204
198
  - - "~>"
205
199
  - !ruby/object:Gem::Version
206
- version: '0.14'
200
+ version: '0.17'
207
201
  - !ruby/object:Gem::Dependency
208
202
  name: timecop
209
203
  requirement: !ruby/object:Gem::Requirement
@@ -224,15 +218,15 @@ dependencies:
224
218
  requirements:
225
219
  - - "~>"
226
220
  - !ruby/object:Gem::Version
227
- version: 1.3.0
221
+ version: 1.4.0
228
222
  type: :development
229
223
  prerelease: false
230
224
  version_requirements: !ruby/object:Gem::Requirement
231
225
  requirements:
232
226
  - - "~>"
233
227
  - !ruby/object:Gem::Version
234
- version: 1.3.0
235
- description:
228
+ version: 1.4.0
229
+ description:
236
230
  email:
237
231
  - jslade@instructure.com
238
232
  executables: []
@@ -245,7 +239,6 @@ files:
245
239
  - lib/inst_jobs_statsd/naming.rb
246
240
  - lib/inst_jobs_statsd/stats/counters.rb
247
241
  - lib/inst_jobs_statsd/stats/counters/failed.rb
248
- - lib/inst_jobs_statsd/stats/counters/orphaned.rb
249
242
  - lib/inst_jobs_statsd/stats/counters/run.rb
250
243
  - lib/inst_jobs_statsd/stats/periodic.rb
251
244
  - lib/inst_jobs_statsd/stats/periodic/failed.rb
@@ -259,12 +252,11 @@ files:
259
252
  - spec/factories/jobs.rb
260
253
  - spec/factories/workers.rb
261
254
  - spec/gemfiles/42.gemfile
262
- - spec/gemfiles/50.gemfile
263
255
  - spec/gemfiles/51.gemfile
256
+ - spec/gemfiles/60.gemfile
264
257
  - spec/inst_jobs_statsd/jobs_tracker_spec.rb
265
258
  - spec/inst_jobs_statsd/naming_spec.rb
266
259
  - spec/inst_jobs_statsd/stats/counters/failed_spec.rb
267
- - spec/inst_jobs_statsd/stats/counters/orphaned_spec.rb
268
260
  - spec/inst_jobs_statsd/stats/counters/run_spec.rb
269
261
  - spec/inst_jobs_statsd/stats/periodic/failed_spec.rb
270
262
  - spec/inst_jobs_statsd/stats/periodic/queue_spec.rb
@@ -282,7 +274,7 @@ homepage: https://github.com/instructure/inst-jobs-statsd
282
274
  licenses:
283
275
  - MIT
284
276
  metadata: {}
285
- post_install_message:
277
+ post_install_message:
286
278
  rdoc_options: []
287
279
  require_paths:
288
280
  - lib
@@ -290,16 +282,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
290
282
  requirements:
291
283
  - - ">="
292
284
  - !ruby/object:Gem::Version
293
- version: '2.3'
285
+ version: '2.4'
294
286
  required_rubygems_version: !ruby/object:Gem::Requirement
295
287
  requirements:
296
288
  - - ">="
297
289
  - !ruby/object:Gem::Version
298
290
  version: '0'
299
291
  requirements: []
300
- rubyforge_project:
301
- rubygems_version: 2.7.6
302
- signing_key:
292
+ rubygems_version: 3.1.4
293
+ signing_key:
303
294
  specification_version: 4
304
295
  summary: Stats reporting for inst-jobs
305
296
  test_files:
@@ -313,14 +304,13 @@ test_files:
313
304
  - spec/inst_jobs_statsd/stats/periodic_spec.rb
314
305
  - spec/inst_jobs_statsd/stats/counters/failed_spec.rb
315
306
  - spec/inst_jobs_statsd/stats/counters/run_spec.rb
316
- - spec/inst_jobs_statsd/stats/counters/orphaned_spec.rb
317
307
  - spec/inst_jobs_statsd/stats/timing_spec.rb
318
308
  - spec/inst_jobs_statsd/jobs_tracker_spec.rb
319
309
  - spec/spec_helper.rb
320
310
  - spec/setup_test_db.rb
321
311
  - spec/matchers.rb
312
+ - spec/gemfiles/60.gemfile
322
313
  - spec/gemfiles/42.gemfile
323
- - spec/gemfiles/50.gemfile
324
314
  - spec/gemfiles/51.gemfile
325
315
  - spec/factories/workers.rb
326
316
  - spec/factories/jobs.rb
@@ -1,34 +0,0 @@
1
- module InstJobsStatsd
2
- module Stats
3
- module Counters
4
- module Orphaned
5
- def self.enable
6
- enable_orphaned_count
7
- end
8
-
9
- # The idea of the orphaned count: when a job finishes, if there
10
- # are other jobs locked_by the *same* worker, they must have been
11
- # orphaned, because they are not going to be picked up and run by
12
- # the worker -- the work queue is designed to only have one job
13
- # locked_by a worker at a time.
14
- # This is based on the symptom seen in AMS-447, where mutliple
15
- # rows of the jobs table can be (incorrectly) updated by the same
16
- # query.
17
- def self.enable_orphaned_count
18
- Delayed::Worker.lifecycle.before(:perform) do |_worker, job|
19
- report_orphaned_count(job)
20
- end
21
- end
22
-
23
- def self.report_orphaned_count(job)
24
- scope = Delayed::Job.where(
25
- 'locked_by = ? AND locked_at = ? AND id <> ?',
26
- job.locked_by, job.locked_at, job.id
27
- )
28
- count = scope.count
29
- Counters.report_count(:orphaned, count, job: job) unless count.zero?
30
- end
31
- end
32
- end
33
- end
34
- end
@@ -1,7 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- gemspec :path=>"../../"
4
-
5
- gem "rails", "~> 5.0.0"
6
- gem 'sinatra', "2.0.0.beta2"
7
- gem 'sinatra-contrib', "2.0.0.beta2"
@@ -1,27 +0,0 @@
1
- RSpec.describe InstJobsStatsd::Stats::Counters::Orphaned do
2
- describe '.enable' do
3
- it 'enables all the things' do
4
- expect(InstJobsStatsd::Stats::Counters::Orphaned).to receive(:enable_orphaned_count)
5
- InstJobsStatsd::Stats::Counters::Orphaned.enable
6
- end
7
- end
8
-
9
- describe '.report_orphaned_count' do
10
- let(:x) { Struct.new(:perform).new(true) }
11
-
12
- before do
13
- Delayed::Worker.lifecycle.reset!
14
- InstJobsStatsd::Stats::Counters::Orphaned.enable
15
-
16
- 4.times { x.send_later(:perform) }
17
- Delayed::Job.order(:id).limit(3)
18
- .update_all(locked_by: 'test', locked_at: Delayed::Job.db_time_now)
19
- end
20
-
21
- it do
22
- expect(InstStatsd::Statsd).to receive(:count)
23
- .with(array_including(/\.orphaned$/), 2, 1, { short_stat: anything, tags: {} })
24
- Delayed::Worker.lifecycle.run_callbacks(:perform, nil, Delayed::Job.first) {}
25
- end
26
- end
27
- end