sidekiq-instrumental 0.3.0 → 0.3.1

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: 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