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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: faa7a76c550d65983211b0f20bbd198d9b7995442e2995de66f24e9240f21ac7
4
- data.tar.gz: 58d0d2e0d6388de6bad14c218a910769372f1e0503f1b02daf5b6746da4f3538
3
+ metadata.gz: 2e3b5be832d57b3a1a67741a65b46b983f0580b56a7ff24db58fb8da85b59ee8
4
+ data.tar.gz: e2465ae0bad37bd73903c6cd7e4c518c1e3350d508684a30178a6f9929d8a393
5
5
  SHA512:
6
- metadata.gz: 241240850476d4200464a3b1b2d86b46242c8ed715def7122124057c94327271bf72de83a48b692203bd6170aa98d70f27797cbb714ad8cd85108efde078c736
7
- data.tar.gz: ad872a46fdee9de36cd770dff16ff6ed6838b9cf9dfa9f1f14223121b51d2ae5ee17f0f677f13b62b9793703c447312429d6434dc224e70a892aaed41f2788d1
6
+ metadata.gz: 90e026453667bb00ebf30e992a3b38e1cca3aeb6273e914ef68fb6cdff4340c1e9a8129def78672a9bd64b58d0d71f7f5c9a022a83ea250e59310f412bb9a64d
7
+ data.tar.gz: f3050927c14134accfba8316f4394bd8ef6bd35aafef32a5ca7c7b1145491a9ab67996e13c6d2c27514e61369ba85ebec8893407b11d6077f658ae819eef3583
@@ -122,6 +122,9 @@ jobs:
122
122
  steps:
123
123
  - attach_workspace:
124
124
  at: .
125
+ - run:
126
+ name: Install bundler
127
+ command: gem install bundler --version=$BUNDLE_VERSION
125
128
  - run:
126
129
  name: Deploy to gem server
127
130
  command: |-
@@ -2,5 +2,7 @@ AllCops:
2
2
  TargetRubyVersion: 2.3
3
3
  Layout/MultilineMethodCallIndentation:
4
4
  EnforcedStyle: indented_relative_to_receiver
5
+ Layout/LineLength:
6
+ Max: 90
5
7
  Metrics:
6
8
  Enabled: false
@@ -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
@@ -13,7 +13,7 @@ module Sidekiq
13
13
  base_key = "sidekiq.#{queue}."
14
14
  increment(base_key + 'queued')
15
15
 
16
- base_key += msg.display_class.underscore.gsub('/', '_') + '.'
16
+ base_key += build_class_key(msg.display_class) + '.'
17
17
 
18
18
  increment(base_key + 'queued')
19
19
  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.underscore.gsub('/', '_') + '.'
21
+ base_key += build_class_key(msg.display_class) + '.'
22
22
 
23
23
  increment(base_key + 'processed')
24
24
  gauge(base_key + 'time', elapsed)
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Sidekiq
4
4
  module Instrumental
5
- VERSION = '0.3.0'
5
+ VERSION = '0.3.1'
6
6
  end
7
7
  end
@@ -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.0
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-01-28 00:00:00.000000000 Z
11
+ date: 2020-03-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: instrumental_agent