inst-jobs-statsd 2.2.0 → 3.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/inst-jobs-statsd.rb +22 -20
- data/lib/inst_jobs_statsd/default_tracking.rb +3 -1
- data/lib/inst_jobs_statsd/ext/job.rb +2 -0
- data/lib/inst_jobs_statsd/jobs_tracker.rb +2 -0
- data/lib/inst_jobs_statsd/naming.rb +19 -24
- data/lib/inst_jobs_statsd/stats/counters/complete.rb +2 -0
- data/lib/inst_jobs_statsd/stats/counters/create.rb +2 -0
- data/lib/inst_jobs_statsd/stats/counters/run.rb +2 -0
- data/lib/inst_jobs_statsd/stats/counters.rb +2 -0
- data/lib/inst_jobs_statsd/stats/periodic/failed.rb +2 -0
- data/lib/inst_jobs_statsd/stats/periodic/queue.rb +3 -1
- data/lib/inst_jobs_statsd/stats/periodic/run.rb +3 -1
- data/lib/inst_jobs_statsd/stats/periodic.rb +6 -2
- data/lib/inst_jobs_statsd/stats/timing/failed.rb +2 -0
- data/lib/inst_jobs_statsd/stats/timing/perform.rb +2 -0
- data/lib/inst_jobs_statsd/stats/timing/pop.rb +2 -0
- data/lib/inst_jobs_statsd/stats/timing.rb +7 -3
- data/lib/inst_jobs_statsd/version.rb +3 -1
- metadata +80 -85
- data/spec/factories/jobs.rb +0 -9
- data/spec/factories/workers.rb +0 -9
- data/spec/gemfiles/60.gemfile +0 -7
- data/spec/inst_jobs_statsd/ext/job_spec.rb +0 -17
- data/spec/inst_jobs_statsd/jobs_tracker_spec.rb +0 -30
- data/spec/inst_jobs_statsd/naming_spec.rb +0 -56
- data/spec/inst_jobs_statsd/stats/counters/complete_spec.rb +0 -27
- data/spec/inst_jobs_statsd/stats/counters/create_spec.rb +0 -27
- data/spec/inst_jobs_statsd/stats/counters/run_spec.rb +0 -27
- data/spec/inst_jobs_statsd/stats/periodic/failed_spec.rb +0 -31
- data/spec/inst_jobs_statsd/stats/periodic/queue_spec.rb +0 -95
- data/spec/inst_jobs_statsd/stats/periodic/run_spec.rb +0 -53
- data/spec/inst_jobs_statsd/stats/periodic_spec.rb +0 -63
- data/spec/inst_jobs_statsd/stats/timing/failed_spec.rb +0 -25
- data/spec/inst_jobs_statsd/stats/timing/perform_spec.rb +0 -35
- data/spec/inst_jobs_statsd/stats/timing/pop_spec.rb +0 -34
- data/spec/inst_jobs_statsd/stats/timing_spec.rb +0 -35
- data/spec/inst_statsd/default_tracking_spec.rb +0 -16
- data/spec/matchers.rb +0 -3
- data/spec/setup_test_db.rb +0 -45
- data/spec/spec_helper.rb +0 -61
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d5760a670863e6b529a17f1443c45b360ed9762b35ad9fe432a4bd66c5b3e90d
|
4
|
+
data.tar.gz: 0efe20cd91f2dcb8cb55b5f4df13c372aa2f1b60ff2401c5379a453ed16e1bae
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1a35e512b5a4b8a1e87205fa97a03922d70b95298635dda6d5778e9bcd110bb02b74dfd36791a963ca169dddbaafcac448c2e33beb1d640b27955f793138d990
|
7
|
+
data.tar.gz: bd8808fa5e79266049f4cc9852df42c8bea046fc19d96c0402831df006e1c2a982a8d0475f12ac603bc0b0baf7224585546f78b79b3a650611f06d67cc1fe283
|
data/lib/inst-jobs-statsd.rb
CHANGED
@@ -1,27 +1,29 @@
|
|
1
|
-
|
2
|
-
require 'inst_statsd'
|
1
|
+
# frozen_string_literal: true
|
3
2
|
|
4
|
-
|
3
|
+
require "inst-jobs"
|
4
|
+
require "inst_statsd"
|
5
5
|
|
6
|
-
require_relative
|
7
|
-
require_relative 'inst_jobs_statsd/jobs_tracker'
|
6
|
+
require_relative "inst_jobs_statsd/version"
|
8
7
|
|
9
|
-
require_relative
|
8
|
+
require_relative "inst_jobs_statsd/default_tracking"
|
9
|
+
require_relative "inst_jobs_statsd/jobs_tracker"
|
10
10
|
|
11
|
-
require_relative
|
12
|
-
require_relative 'inst_jobs_statsd/stats/counters/create'
|
13
|
-
require_relative 'inst_jobs_statsd/stats/counters/run'
|
14
|
-
require_relative 'inst_jobs_statsd/stats/counters/complete'
|
11
|
+
require_relative "inst_jobs_statsd/naming"
|
15
12
|
|
16
|
-
require_relative
|
17
|
-
require_relative
|
18
|
-
require_relative
|
19
|
-
require_relative
|
13
|
+
require_relative "inst_jobs_statsd/stats/counters"
|
14
|
+
require_relative "inst_jobs_statsd/stats/counters/create"
|
15
|
+
require_relative "inst_jobs_statsd/stats/counters/run"
|
16
|
+
require_relative "inst_jobs_statsd/stats/counters/complete"
|
20
17
|
|
21
|
-
require_relative
|
22
|
-
require_relative
|
23
|
-
require_relative
|
24
|
-
require_relative
|
25
|
-
require_relative 'inst_jobs_statsd/ext/job'
|
18
|
+
require_relative "inst_jobs_statsd/stats/periodic"
|
19
|
+
require_relative "inst_jobs_statsd/stats/periodic/failed"
|
20
|
+
require_relative "inst_jobs_statsd/stats/periodic/queue"
|
21
|
+
require_relative "inst_jobs_statsd/stats/periodic/run"
|
26
22
|
|
27
|
-
|
23
|
+
require_relative "inst_jobs_statsd/stats/timing"
|
24
|
+
require_relative "inst_jobs_statsd/stats/timing/failed"
|
25
|
+
require_relative "inst_jobs_statsd/stats/timing/perform"
|
26
|
+
require_relative "inst_jobs_statsd/stats/timing/pop"
|
27
|
+
require_relative "inst_jobs_statsd/ext/job"
|
28
|
+
|
29
|
+
InstStatsd::DefaultTracking.include InstJobsStatsd::DefaultTracking
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
# Defines InstStatsd::DefaultTracking.track_jobs
|
2
4
|
# to be consistent with InstStatsd::DefaultTracking.track_sql etc
|
3
5
|
module InstJobsStatsd
|
@@ -8,7 +10,7 @@ module InstJobsStatsd
|
|
8
10
|
|
9
11
|
module ClassMethods
|
10
12
|
def track_jobs(enable_periodic_queries: true)
|
11
|
-
@jobs_tracker ||= JobsTracker.new(enable_periodic_queries: enable_periodic_queries)
|
13
|
+
@jobs_tracker ||= JobsTracker.new(enable_periodic_queries: enable_periodic_queries) # rubocop:disable Naming/MemoizedInstanceVariableName
|
12
14
|
end
|
13
15
|
end
|
14
16
|
end
|
@@ -1,6 +1,8 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module InstJobsStatsd
|
2
4
|
module Naming
|
3
|
-
BASENAME =
|
5
|
+
BASENAME = "delayedjob"
|
4
6
|
|
5
7
|
# The root prefix for all stat names
|
6
8
|
# TODO: Make this configurable
|
@@ -8,10 +10,6 @@ module InstJobsStatsd
|
|
8
10
|
BASENAME
|
9
11
|
end
|
10
12
|
|
11
|
-
def self.configure(strand_filter: nil)
|
12
|
-
@strand_filter = strand_filter
|
13
|
-
end
|
14
|
-
|
15
13
|
def self.qualified_names(stat_name, job)
|
16
14
|
names = ["#{basename}.#{stat_name}"]
|
17
15
|
tagged = tagged_stat(names[0], job)
|
@@ -37,29 +35,27 @@ module InstJobsStatsd
|
|
37
35
|
def self.dd_job_tags(job)
|
38
36
|
tags = dd_region_tags
|
39
37
|
return tags unless job
|
40
|
-
|
38
|
+
|
39
|
+
tags[:cluster] = job.current_shard&.database_server&.id if job.respond_to?(:current_shard)
|
40
|
+
tags[:priority] = job.priority
|
41
|
+
tags.compact!
|
42
|
+
|
41
43
|
return tags unless job.tag
|
42
|
-
return tags if job.tag
|
44
|
+
return tags if job.tag.include?("Class:0x")
|
43
45
|
|
44
46
|
method_tag, obj_tag = split_to_tag(job)
|
45
47
|
tag = obj_tag
|
46
|
-
tag = [obj_tag, method_tag].join(
|
48
|
+
tag = [obj_tag, method_tag].join(".") if method_tag.present?
|
47
49
|
tags[:tag] = tag
|
48
50
|
tags
|
49
51
|
end
|
50
52
|
|
51
|
-
def self.custom_tags(job, tags)
|
52
|
-
tags[:jobshard] = job.shard.id if job.respond_to?(:shard)
|
53
|
-
tags[:strand] = job.strand if job&.strand && @strand_filter&.call(job)
|
54
|
-
tags
|
55
|
-
end
|
56
|
-
|
57
53
|
# this converts Foo#bar" or "Foo.bar" into "Foo and "bar",
|
58
54
|
# and makes sure the values are valid to be used for statsd names
|
59
55
|
def self.job_tags(job)
|
60
56
|
return unless job
|
61
57
|
return unless job.tag
|
62
|
-
return if job.tag
|
58
|
+
return if job.tag.include?("Class:0x")
|
63
59
|
|
64
60
|
method_tag, obj_tag = split_to_tag(job)
|
65
61
|
tags = [obj_tag]
|
@@ -70,26 +66,25 @@ module InstJobsStatsd
|
|
70
66
|
# We are using all existing stat names here because we do not want
|
71
67
|
# to break existing dependencies on the non-regioned data
|
72
68
|
def self.region_tags(stat_names)
|
73
|
-
return unless ENV[
|
69
|
+
return unless ENV["INST_JOBS_STATSD_NAMESPACE"]
|
74
70
|
|
75
71
|
stat_names.map do |name|
|
76
72
|
name
|
77
|
-
.split(
|
78
|
-
.insert(2, ENV[
|
79
|
-
.join(
|
73
|
+
.split(".")
|
74
|
+
.insert(2, ENV["INST_JOBS_STATSD_NAMESPACE"])
|
75
|
+
.join(".")
|
80
76
|
end
|
81
77
|
end
|
82
78
|
|
83
79
|
def self.dd_region_tags
|
84
|
-
return {} unless ENV[
|
85
|
-
{ namespace: ENV['INST_JOBS_STATSD_NAMESPACE'] }
|
86
|
-
end
|
80
|
+
return {} unless ENV["INST_JOBS_STATSD_NAMESPACE"]
|
87
81
|
|
88
|
-
|
82
|
+
{ namespace: ENV["INST_JOBS_STATSD_NAMESPACE"] }
|
83
|
+
end
|
89
84
|
|
90
85
|
def self.split_to_tag(job)
|
91
86
|
obj_tag, method_tag = job.tag.split(/[\.#]/, 2).map do |v|
|
92
|
-
InstStatsd::Statsd.escape(v).gsub(
|
87
|
+
InstStatsd::Statsd.escape(v).gsub("::", "-")
|
93
88
|
end
|
94
89
|
[method_tag, obj_tag]
|
95
90
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module InstJobsStatsd
|
2
4
|
module Stats
|
3
5
|
module Periodic
|
@@ -35,7 +37,7 @@ module InstJobsStatsd
|
|
35
37
|
jobs_run_at = queued_jobs_scope.limit(10_000).pluck(:run_at)
|
36
38
|
age_secs = jobs_run_at.map { |t| Delayed::Job.db_time_now - t }
|
37
39
|
Periodic.report_gauge(:queue_age_total, age_secs.sum)
|
38
|
-
Periodic.report_gauge(:queue_age_max, age_secs.max)
|
40
|
+
Periodic.report_gauge(:queue_age_max, age_secs.max || 0)
|
39
41
|
end
|
40
42
|
|
41
43
|
def self.queued_jobs_scope
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module InstJobsStatsd
|
2
4
|
module Stats
|
3
5
|
module Periodic
|
@@ -26,7 +28,7 @@ module InstJobsStatsd
|
|
26
28
|
jobs_run_at = running_jobs_scope.limit(10_000).pluck(:run_at)
|
27
29
|
age_secs = jobs_run_at.map { |t| Delayed::Job.db_time_now - t }
|
28
30
|
Periodic.report_gauge(:run_age_total, age_secs.sum)
|
29
|
-
Periodic.report_gauge(:run_age_max, age_secs.max)
|
31
|
+
Periodic.report_gauge(:run_age_max, age_secs.max || 0)
|
30
32
|
end
|
31
33
|
|
32
34
|
def self.running_jobs_scope
|
@@ -1,12 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module InstJobsStatsd
|
2
4
|
module Stats
|
3
5
|
module Periodic
|
4
6
|
def self.enable_callbacks
|
5
|
-
@instance ||= Callbacks.new
|
7
|
+
@instance ||= Callbacks.new # rubocop:disable Naming/MemoizedInstanceVariableName
|
6
8
|
end
|
7
9
|
|
8
10
|
def self.add(proc)
|
9
11
|
return unless @instance
|
12
|
+
|
10
13
|
@instance.add(proc)
|
11
14
|
end
|
12
15
|
|
@@ -72,6 +75,7 @@ module InstJobsStatsd
|
|
72
75
|
# When the required interval of time has passed, execute the given block
|
73
76
|
def tick
|
74
77
|
return unless Delayed::Job.db_time_now >= @next_run
|
78
|
+
|
75
79
|
update_next_run
|
76
80
|
yield
|
77
81
|
end
|
@@ -83,7 +87,7 @@ module InstJobsStatsd
|
|
83
87
|
# from the target interval as much as possible
|
84
88
|
def update_next_run
|
85
89
|
ticks = ((Delayed::Job.db_time_now - @start_time) / @min_interval).floor
|
86
|
-
@next_run = @start_time + (ticks + 1) * @min_interval
|
90
|
+
@next_run = @start_time + ((ticks + 1) * @min_interval)
|
87
91
|
end
|
88
92
|
end
|
89
93
|
end
|
@@ -1,11 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module InstJobsStatsd
|
2
4
|
module Stats
|
3
5
|
module Timing
|
4
|
-
def self.report_timing(stat, job: nil, timing: nil, sample_rate: 1)
|
6
|
+
def self.report_timing(stat, job: nil, timing: nil, sample_rate: 1, &block)
|
5
7
|
stats = Naming.qualified_names(stat, job)
|
6
8
|
|
7
|
-
if
|
8
|
-
InstStatsd::Statsd.time(stats, sample_rate, short_stat: stat, tags: Naming.dd_job_tags(job))
|
9
|
+
if block
|
10
|
+
InstStatsd::Statsd.time(stats, sample_rate, short_stat: stat, tags: Naming.dd_job_tags(job), &block)
|
9
11
|
else
|
10
12
|
InstStatsd::Statsd.timing(stats, timing, sample_rate, short_stat: stat, tags: Naming.dd_job_tags(job))
|
11
13
|
end
|
@@ -13,12 +15,14 @@ module InstJobsStatsd
|
|
13
15
|
|
14
16
|
def self.report_job_timing_queued(job)
|
15
17
|
return unless job
|
18
|
+
|
16
19
|
time_in_queue = ((Delayed::Job.db_time_now - job.run_at) * 1000).round
|
17
20
|
report_timing(:queue, job: job, timing: time_in_queue)
|
18
21
|
end
|
19
22
|
|
20
23
|
def self.report_job_timing_failed(job)
|
21
24
|
return unless job
|
25
|
+
|
22
26
|
time_to_failure = ((Delayed::Job.db_time_now - job.run_at) * 1000).round
|
23
27
|
report_timing(:failed_after, job: job, timing: time_to_failure)
|
24
28
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: inst-jobs-statsd
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
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:
|
11
|
+
date: 2023-10-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: inst-jobs
|
@@ -34,24 +34,18 @@ dependencies:
|
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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: []
|
@@ -257,32 +293,12 @@ files:
|
|
257
293
|
- lib/inst_jobs_statsd/stats/timing/perform.rb
|
258
294
|
- lib/inst_jobs_statsd/stats/timing/pop.rb
|
259
295
|
- lib/inst_jobs_statsd/version.rb
|
260
|
-
- spec/factories/jobs.rb
|
261
|
-
- spec/factories/workers.rb
|
262
|
-
- spec/gemfiles/60.gemfile
|
263
|
-
- spec/inst_jobs_statsd/ext/job_spec.rb
|
264
|
-
- spec/inst_jobs_statsd/jobs_tracker_spec.rb
|
265
|
-
- spec/inst_jobs_statsd/naming_spec.rb
|
266
|
-
- spec/inst_jobs_statsd/stats/counters/complete_spec.rb
|
267
|
-
- spec/inst_jobs_statsd/stats/counters/create_spec.rb
|
268
|
-
- spec/inst_jobs_statsd/stats/counters/run_spec.rb
|
269
|
-
- spec/inst_jobs_statsd/stats/periodic/failed_spec.rb
|
270
|
-
- spec/inst_jobs_statsd/stats/periodic/queue_spec.rb
|
271
|
-
- spec/inst_jobs_statsd/stats/periodic/run_spec.rb
|
272
|
-
- spec/inst_jobs_statsd/stats/periodic_spec.rb
|
273
|
-
- spec/inst_jobs_statsd/stats/timing/failed_spec.rb
|
274
|
-
- spec/inst_jobs_statsd/stats/timing/perform_spec.rb
|
275
|
-
- spec/inst_jobs_statsd/stats/timing/pop_spec.rb
|
276
|
-
- spec/inst_jobs_statsd/stats/timing_spec.rb
|
277
|
-
- spec/inst_statsd/default_tracking_spec.rb
|
278
|
-
- spec/matchers.rb
|
279
|
-
- spec/setup_test_db.rb
|
280
|
-
- spec/spec_helper.rb
|
281
296
|
homepage: https://github.com/instructure/inst-jobs-statsd
|
282
297
|
licenses:
|
283
298
|
- MIT
|
284
|
-
metadata:
|
285
|
-
|
299
|
+
metadata:
|
300
|
+
rubygems_mfa_required: 'true'
|
301
|
+
post_install_message:
|
286
302
|
rdoc_options: []
|
287
303
|
require_paths:
|
288
304
|
- lib
|
@@ -290,36 +306,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
290
306
|
requirements:
|
291
307
|
- - ">="
|
292
308
|
- !ruby/object:Gem::Version
|
293
|
-
version: '2.
|
309
|
+
version: '2.7'
|
294
310
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
295
311
|
requirements:
|
296
312
|
- - ">="
|
297
313
|
- !ruby/object:Gem::Version
|
298
314
|
version: '0'
|
299
315
|
requirements: []
|
300
|
-
rubygems_version: 3.
|
301
|
-
signing_key:
|
316
|
+
rubygems_version: 3.4.19
|
317
|
+
signing_key:
|
302
318
|
specification_version: 4
|
303
319
|
summary: Stats reporting for inst-jobs
|
304
|
-
test_files:
|
305
|
-
- spec/factories/jobs.rb
|
306
|
-
- spec/factories/workers.rb
|
307
|
-
- spec/gemfiles/60.gemfile
|
308
|
-
- spec/inst_jobs_statsd/ext/job_spec.rb
|
309
|
-
- spec/inst_jobs_statsd/jobs_tracker_spec.rb
|
310
|
-
- spec/inst_jobs_statsd/naming_spec.rb
|
311
|
-
- spec/inst_jobs_statsd/stats/counters/complete_spec.rb
|
312
|
-
- spec/inst_jobs_statsd/stats/counters/create_spec.rb
|
313
|
-
- spec/inst_jobs_statsd/stats/counters/run_spec.rb
|
314
|
-
- spec/inst_jobs_statsd/stats/periodic/failed_spec.rb
|
315
|
-
- spec/inst_jobs_statsd/stats/periodic/queue_spec.rb
|
316
|
-
- spec/inst_jobs_statsd/stats/periodic/run_spec.rb
|
317
|
-
- spec/inst_jobs_statsd/stats/periodic_spec.rb
|
318
|
-
- spec/inst_jobs_statsd/stats/timing/failed_spec.rb
|
319
|
-
- spec/inst_jobs_statsd/stats/timing/perform_spec.rb
|
320
|
-
- spec/inst_jobs_statsd/stats/timing/pop_spec.rb
|
321
|
-
- spec/inst_jobs_statsd/stats/timing_spec.rb
|
322
|
-
- spec/inst_statsd/default_tracking_spec.rb
|
323
|
-
- spec/matchers.rb
|
324
|
-
- spec/setup_test_db.rb
|
325
|
-
- spec/spec_helper.rb
|
320
|
+
test_files: []
|
data/spec/factories/jobs.rb
DELETED
data/spec/factories/workers.rb
DELETED
data/spec/gemfiles/60.gemfile
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
RSpec.describe 'InstJobsStatsd::Ext::Job' do
|
2
|
-
describe 'sends count on job failure' do
|
3
|
-
before do
|
4
|
-
InstJobsStatsd::JobsTracker.new
|
5
|
-
end
|
6
|
-
let(:x) { Struct.new(:perform).new(true) }
|
7
|
-
it 'sends a stat' do
|
8
|
-
allow(InstStatsd::Statsd).to receive(:count)
|
9
|
-
|
10
|
-
x.delay.perform
|
11
|
-
Delayed::Job.first.fail!
|
12
|
-
|
13
|
-
expect(InstStatsd::Statsd).to have_received(:count)
|
14
|
-
.with(array_including(/\.failed$/), 1, 1, short_stat: :failed, tags: {})
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|