sidekiq-instrumental 0.3.0 → 0.3.1
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/.circleci/config.yml +3 -0
- data/.rubocop.yml +2 -0
- data/CHANGELOG.md +4 -0
- data/lib/sidekiq/instrumental/middleware/base.rb +8 -0
- data/lib/sidekiq/instrumental/middleware/client.rb +1 -1
- data/lib/sidekiq/instrumental/middleware/server.rb +1 -1
- data/lib/sidekiq/instrumental/version.rb +1 -1
- data/spec/sidekiq/instrumental/middleware/client_spec.rb +35 -0
- data/spec/sidekiq/instrumental/middleware/server_spec.rb +35 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2e3b5be832d57b3a1a67741a65b46b983f0580b56a7ff24db58fb8da85b59ee8
|
4
|
+
data.tar.gz: e2465ae0bad37bd73903c6cd7e4c518c1e3350d508684a30178a6f9929d8a393
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 90e026453667bb00ebf30e992a3b38e1cca3aeb6273e914ef68fb6cdff4340c1e9a8129def78672a9bd64b58d0d71f7f5c9a022a83ea250e59310f412bb9a64d
|
7
|
+
data.tar.gz: f3050927c14134accfba8316f4394bd8ef6bd35aafef32a5ca7c7b1145491a9ab67996e13c6d2c27514e61369ba85ebec8893407b11d6077f658ae819eef3583
|
data/.circleci/config.yml
CHANGED
data/.rubocop.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -9,6 +9,10 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
|
|
9
9
|
### Changed
|
10
10
|
### Fixed
|
11
11
|
|
12
|
+
## [0.3.1]
|
13
|
+
### Fixed
|
14
|
+
- class name calculation needs to filter out unsupported characters by instrumental
|
15
|
+
|
12
16
|
## [0.3.0]
|
13
17
|
### Fixed
|
14
18
|
- class name calculation now uses Sidekiq's display\_class\_name to support ActiveJob jobs
|
@@ -39,6 +39,14 @@ module Sidekiq
|
|
39
39
|
def gauge(*args)
|
40
40
|
config.I.gauge(*args)
|
41
41
|
end
|
42
|
+
|
43
|
+
def build_class_key(klass_name)
|
44
|
+
key = klass_name.underscore
|
45
|
+
.gsub(/[^\d\w\-_\.]/, '_')
|
46
|
+
.gsub(/\.{2,}/, '.')
|
47
|
+
key.chomp!('.') while key[-1] == '.'
|
48
|
+
key
|
49
|
+
end
|
42
50
|
end
|
43
51
|
end
|
44
52
|
end
|
@@ -18,7 +18,7 @@ module Sidekiq
|
|
18
18
|
gauge(base_key + 'time', elapsed)
|
19
19
|
gauge(base_key + 'enqueued', stats.queues[queue].to_i)
|
20
20
|
gauge(base_key + 'latency', Sidekiq::Queue.new(queue.to_s).latency)
|
21
|
-
base_key += msg.display_class
|
21
|
+
base_key += build_class_key(msg.display_class) + '.'
|
22
22
|
|
23
23
|
increment(base_key + 'processed')
|
24
24
|
gauge(base_key + 'time', elapsed)
|
@@ -38,6 +38,41 @@ RSpec.describe Sidekiq::Instrumental::Middleware::Client do
|
|
38
38
|
subject
|
39
39
|
end
|
40
40
|
|
41
|
+
describe 'metric naming' do
|
42
|
+
context 'when the class name contains unsupported characters' do
|
43
|
+
let(:msg) { { 'class' => 'MyMailer#message/fun' } }
|
44
|
+
|
45
|
+
it 'changes them to _' do
|
46
|
+
expect(middleware).to receive(:increment)
|
47
|
+
.with("sidekiq.#{queue}.my_mailer_message_fun.queued")
|
48
|
+
|
49
|
+
subject
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
context 'when the class name causes more then one . in a row' do
|
54
|
+
let(:msg) { { 'class' => 'MyMailer..message' } }
|
55
|
+
|
56
|
+
it 'combines them to one' do
|
57
|
+
expect(middleware).to receive(:increment)
|
58
|
+
.with("sidekiq.#{queue}.my_mailer.message.queued")
|
59
|
+
|
60
|
+
subject
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
context 'trims a trailing .' do
|
65
|
+
let(:msg) { { 'class' => 'MyMailer#message.' } }
|
66
|
+
|
67
|
+
it 'combines them to one' do
|
68
|
+
expect(middleware).to receive(:increment)
|
69
|
+
.with("sidekiq.#{queue}.my_mailer_message.queued")
|
70
|
+
|
71
|
+
subject
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
41
76
|
it 'calls display_class to get the class name' do
|
42
77
|
expect_any_instance_of(::Sidekiq::Job)
|
43
78
|
.to receive(:display_class).and_call_original
|
@@ -91,6 +91,41 @@ RSpec.describe Sidekiq::Instrumental::Middleware::Server do
|
|
91
91
|
subject
|
92
92
|
end
|
93
93
|
|
94
|
+
describe 'metric naming' do
|
95
|
+
context 'when the class name contains unsupported characters' do
|
96
|
+
let(:msg) { { 'class' => 'MyMailer#message/fun' } }
|
97
|
+
|
98
|
+
it 'changes them to _' do
|
99
|
+
expect(middleware).to receive(:increment)
|
100
|
+
.with("sidekiq.#{queue}.my_mailer_message_fun.processed")
|
101
|
+
|
102
|
+
subject
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
context 'when the class name causes more then one . in a row' do
|
107
|
+
let(:msg) { { 'class' => 'MyMailer..message' } }
|
108
|
+
|
109
|
+
it 'combines them to one' do
|
110
|
+
expect(middleware).to receive(:increment)
|
111
|
+
.with("sidekiq.#{queue}.my_mailer.message.processed")
|
112
|
+
|
113
|
+
subject
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
context 'trims a trailing .' do
|
118
|
+
let(:msg) { { 'class' => 'MyMailer#message.' } }
|
119
|
+
|
120
|
+
it 'combines them to one' do
|
121
|
+
expect(middleware).to receive(:increment)
|
122
|
+
.with("sidekiq.#{queue}.my_mailer_message.processed")
|
123
|
+
|
124
|
+
subject
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
94
129
|
it 'gauge elapsed time metric for the class' do
|
95
130
|
expect(middleware).to receive(:gauge)
|
96
131
|
.with(
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sidekiq-instrumental
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Edward Rudd
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-03-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: instrumental_agent
|