sidekiq-monitor-stats 0.0.2 → 0.0.3

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
- SHA1:
3
- metadata.gz: 73fd4b85bc69425e68f711dbb9a84137de8be68b
4
- data.tar.gz: 2fcb4138c6b257b52b3eefa777bd96944e753e5a
2
+ SHA256:
3
+ metadata.gz: fec6d8d7005afd117c9e7a599624709eb16a8a17b182f4f0514812ea887bcb6b
4
+ data.tar.gz: cb55b235e81cd97919bdba20355896a18d15a758dfb17af513ec37842dae2f4c
5
5
  SHA512:
6
- metadata.gz: eda4badd95add8277d122bf44681dc38283fa72ef91e9402aae8254878f8eeb2e55b766406931890f4b9e02f1ab89f1c9f907b44a5178c868f5533f4d142bcc4
7
- data.tar.gz: 558188e16c440559cb24a9ae9d35d8cc6ea917d33997803ef4f879defa3fece2499b8f157c193d379685a451d04c9cf19995230d354ed71472f90aff7b0bfeaf
6
+ metadata.gz: 1b17637e5e4a412bcde74d1de22eca11625ef30821180130d456d8a37ac2ccf18cb71b2a33557114a09a506cebf9b4bc060780519656bba73362473a55e7d01e
7
+ data.tar.gz: 1640fc7a3c88050a18b37bcbcf3b6f29098dfd320593f1a0c127f7965fa4ae4ea6d185a36a2f4118572490e8c1da06af8f428700f2b4bfa65e223f9b08a207f2
@@ -5,6 +5,8 @@ services:
5
5
  rvm:
6
6
  - 2.3.4
7
7
  - 2.4.1
8
+ - 2.5
9
+ - 2.6
8
10
  gemfile:
9
11
  - gemfiles/sidekiq_5.gemfile
10
12
  - gemfiles/sidekiq_4.gemfile
data/README.md CHANGED
@@ -79,6 +79,16 @@ This is an example of the output you'll get:
79
79
  "concurrency":5,
80
80
  "busy":5
81
81
  }
82
+ ],
83
+ "jobs": [
84
+ {
85
+ "process": "foo:1234",
86
+ "thread": "1001",
87
+ "jid": "1234abc",
88
+ "queue": "default",
89
+ "job": "WebWorker",
90
+ "run_at": "2015-04-10T15:07:52+00:00"
91
+ }
82
92
  ]
83
93
  }
84
94
  ```
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- sidekiq-monitor-stats (0.0.1)
4
+ sidekiq-monitor-stats (0.0.3)
5
5
  sidekiq
6
6
 
7
7
  GEM
@@ -53,4 +53,4 @@ DEPENDENCIES
53
53
  sinatra
54
54
 
55
55
  BUNDLED WITH
56
- 1.14.6
56
+ 1.17.2
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- sidekiq-monitor-stats (0.0.1)
4
+ sidekiq-monitor-stats (0.0.3)
5
5
  sidekiq
6
6
 
7
7
  GEM
@@ -53,4 +53,4 @@ DEPENDENCIES
53
53
  sinatra
54
54
 
55
55
  BUNDLED WITH
56
- 1.14.6
56
+ 1.17.2
@@ -28,6 +28,21 @@ module Sidekiq
28
28
  }
29
29
  end
30
30
  end
31
+
32
+ def job_metrics
33
+ Sidekiq::Workers.new.map do |process, thread, msg|
34
+ job = Sidekiq::Job.new(msg['payload'])
35
+
36
+ {
37
+ process: process,
38
+ thread: thread,
39
+ jid: job.jid,
40
+ queue: msg['queue'],
41
+ job: job.display_class,
42
+ run_at: Time.at(msg['run_at'])
43
+ }
44
+ end
45
+ end
31
46
  end
32
47
  end
33
48
  end
@@ -9,7 +9,8 @@ module Sidekiq
9
9
 
10
10
  data = {
11
11
  queues: monitor_stats.queue_metrics,
12
- processes: monitor_stats.process_metrics
12
+ processes: monitor_stats.process_metrics,
13
+ jobs: monitor_stats.job_metrics
13
14
  }
14
15
 
15
16
  if Sidekiq::VERSION >= "5.0.0"
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = "sidekiq-monitor-stats"
7
- spec.version = "0.0.2"
7
+ spec.version = "0.0.3"
8
8
  spec.authors = ["Albert Llop"]
9
9
  spec.email = ["albert@getharvest.com"]
10
10
  spec.summary = %q{Add an endpoint to your running application that is running Sidekiq that returns useful data in JSON format.}
@@ -8,6 +8,7 @@ class Sidekiq::Monitor::StatsTest < Minitest::Test
8
8
  def test_returns_empty_data
9
9
  assert_equal({}, stats.queue_metrics)
10
10
  assert_equal([], stats.process_metrics)
11
+ assert_equal([], stats.job_metrics)
11
12
  end
12
13
 
13
14
  def test_with_some_data
@@ -30,6 +31,18 @@ class Sidekiq::Monitor::StatsTest < Minitest::Test
30
31
  }
31
32
 
32
33
  conn.hmset('foo:1234', 'info', Sidekiq.dump_json(process_stats), 'at', @started_at.to_f, 'busy', 4)
34
+
35
+ job_stats = {
36
+ queue: 'default',
37
+ payload: {
38
+ class: 'WebWorker',
39
+ args: [1,'abc'],
40
+ jid: '1234abc'
41
+ },
42
+ run_at: @started_at.to_f
43
+ }
44
+
45
+ conn.hmset('foo:1234:workers', 1001, Sidekiq.dump_json(job_stats))
33
46
  end
34
47
 
35
48
  assert_equal({ backlog: 1, latency: 0 }, stats.queue_metrics['default'])
@@ -43,6 +56,14 @@ class Sidekiq::Monitor::StatsTest < Minitest::Test
43
56
  assert_equal 25, process[:concurrency]
44
57
  assert_equal 4, process[:busy]
45
58
  assert_in_delta @started_at, process[:started_at], 0.01
59
+
60
+ job = stats.job_metrics.first
61
+ assert_equal 'foo:1234', job[:process]
62
+ assert_equal '1001', job[:thread]
63
+ assert_equal '1234abc', job[:jid]
64
+ assert_equal 'default', job[:queue]
65
+ assert_equal 'WebWorker', job[:job]
66
+ assert_in_delta @started_at, job[:run_at], 0.01
46
67
  end
47
68
 
48
69
  private
@@ -16,6 +16,7 @@ class Sidekiq::Monitor::WebTest < Minitest::Test
16
16
  body = Sidekiq.load_json(last_response.body)
17
17
  assert_equal({}, body['queues'])
18
18
  assert_equal([], body['processes'])
19
+ assert_equal([], body['jobs'])
19
20
  end
20
21
 
21
22
  def test_monitor_stats_with_some_data
@@ -27,6 +28,13 @@ class Sidekiq::Monitor::WebTest < Minitest::Test
27
28
  'queues' => ['default', 'high'],
28
29
  'concurrency'=> 25,
29
30
  'busy' => 4
31
+ ],
32
+ job_metrics: [
33
+ 'process' => 'foo:1234',
34
+ 'thread' => '1001',
35
+ 'jid' => '1234abc',
36
+ 'queue' => 'default',
37
+ 'job' => 'WebWorker',
30
38
  ]
31
39
  )
32
40
  get '/monitor-stats'
@@ -44,6 +52,14 @@ class Sidekiq::Monitor::WebTest < Minitest::Test
44
52
  assert_equal ['default','high'], process['queues']
45
53
  assert_equal 25, process['concurrency']
46
54
  assert_equal 4, process['busy']
55
+
56
+ assert_equal 1, body['jobs'].size
57
+ job = body['jobs'].first
58
+ assert_equal 'foo:1234', job['process']
59
+ assert_equal '1001', job['thread']
60
+ assert_equal '1234abc', job['jid']
61
+ assert_equal 'default', job['queue']
62
+ assert_equal 'WebWorker', job['job']
47
63
  end
48
64
 
49
65
  private
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidekiq-monitor-stats
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Albert Llop
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-04-26 00:00:00.000000000 Z
11
+ date: 2019-12-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -165,8 +165,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
165
165
  - !ruby/object:Gem::Version
166
166
  version: '0'
167
167
  requirements: []
168
- rubyforge_project:
169
- rubygems_version: 2.6.11
168
+ rubygems_version: 3.0.3
170
169
  signing_key:
171
170
  specification_version: 4
172
171
  summary: Add an endpoint to your running application that is running Sidekiq that