sidekiq-spy 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/.ruby-version +1 -1
- data/.travis.yml +5 -2
- data/CHANGELOG.md +7 -0
- data/ext/mkrf_conf.rb +27 -0
- data/lib/sidekiq-spy/display/panel.rb +4 -0
- data/lib/sidekiq-spy/display/panels/header.rb +3 -0
- data/lib/sidekiq-spy/display/panels/queues.rb +6 -14
- data/lib/sidekiq-spy/display/panels/redis_stats.rb +9 -9
- data/lib/sidekiq-spy/display/panels/retries.rb +10 -18
- data/lib/sidekiq-spy/display/panels/schedules.rb +8 -16
- data/lib/sidekiq-spy/display/panels/sidekiq_stats.rb +8 -8
- data/lib/sidekiq-spy/display/panels/workers.rb +9 -17
- data/lib/sidekiq-spy/spy/dataspyable.rb +17 -0
- data/lib/sidekiq-spy/spy/queues.rb +3 -3
- data/lib/sidekiq-spy/spy/retries.rb +1 -2
- data/lib/sidekiq-spy/spy/schedules.rb +1 -1
- data/lib/sidekiq-spy/spy/stats.rb +31 -52
- data/lib/sidekiq-spy/spy/workers.rb +3 -3
- data/lib/sidekiq-spy/version.rb +1 -1
- data/lib/sidekiq-spy.rb +1 -0
- data/sidekiq-spy.gemspec +16 -1
- data/test/sidekiq-spy/spy/queues_test.rb +12 -12
- data/test/sidekiq-spy/spy/retries_test.rb +4 -4
- data/test/sidekiq-spy/spy/schedules_test.rb +4 -4
- data/test/sidekiq-spy/spy/stats_test.rb +12 -12
- data/test/sidekiq-spy/spy/workers_test.rb +14 -14
- metadata +41 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7c1eeb7d31dc8ab0fc09db02331d9116b847af2d
|
4
|
+
data.tar.gz: 6fcef234faf6569e59c79195bcd657a5751e82ed
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5495713387031f47cdea190c120b51a1226a05b2cbf95e7dc6b83310f40bf0034c5dfc407d01445df23420953b4833d460fdb40dadde42d1af45d3079552d057
|
7
|
+
data.tar.gz: 868f3381360522b426f5ae2ac0565cc3e7860c55d0a6afb449fc2e2104c70529473fafbe49163ad0e9bb59a6dd5af0526f52f5821baa3456e6af98ce1b6c386d
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
ruby-2.
|
1
|
+
ruby-2.1.0
|
data/.travis.yml
CHANGED
@@ -1,9 +1,12 @@
|
|
1
1
|
language: ruby
|
2
|
+
before_install:
|
3
|
+
- "gem install bundler -v '~> 1.5, != 1.5.0'"
|
2
4
|
rvm:
|
5
|
+
- 2.1.0
|
3
6
|
- 2.0.0
|
4
7
|
- 1.9.3
|
5
8
|
- jruby-19mode
|
6
|
-
- rbx-
|
9
|
+
- rbx-2.1.1
|
7
10
|
notifications:
|
8
11
|
email:
|
9
12
|
recipients:
|
@@ -11,4 +14,4 @@ notifications:
|
|
11
14
|
matrix:
|
12
15
|
allow_failures:
|
13
16
|
- rvm: jruby-19mode
|
14
|
-
- rvm: rbx-
|
17
|
+
- rvm: rbx-2.1.1
|
data/CHANGELOG.md
CHANGED
@@ -6,6 +6,13 @@ For many of commits by [tiredpixel](http://www.tiredpixel.com), the commit
|
|
6
6
|
message provides information and examples.
|
7
7
|
|
8
8
|
|
9
|
+
## 0.3.1
|
10
|
+
|
11
|
+
- major refactoring of data structures
|
12
|
+
- [#1] `Spy::Stats` data+refresh pattern like `Spy::Workers`
|
13
|
+
- curses fix for Ruby 2.1.0, which is now supported
|
14
|
+
|
15
|
+
|
9
16
|
## 0.3.0
|
10
17
|
|
11
18
|
- sporadic screen-misdraws fix
|
data/ext/mkrf_conf.rb
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'rubygems/dependency_installer'
|
2
|
+
|
3
|
+
# SEE: http://en.wikibooks.org/wiki/Ruby_Programming/RubyGems#How_to_install_different_versions_of_gems_depending_on_which_version_of_ruby_the_installee_is_using
|
4
|
+
|
5
|
+
di = Gem::DependencyInstaller.new
|
6
|
+
|
7
|
+
begin
|
8
|
+
if RUBY_VERSION >= '2.1'
|
9
|
+
puts "Installing curses because Ruby #{RUBY_VERSION}"
|
10
|
+
|
11
|
+
# BEWARE: repetition; SEE: sidekiq-spy.gemspec
|
12
|
+
di.install "curses", "~> 1.0"
|
13
|
+
else
|
14
|
+
puts "Not installing curses because Ruby #{RUBY_VERSION}"
|
15
|
+
end
|
16
|
+
rescue => e
|
17
|
+
warn "#{$0}: #{e}"
|
18
|
+
|
19
|
+
exit!
|
20
|
+
end
|
21
|
+
|
22
|
+
puts "Writing fake Rakefile"
|
23
|
+
|
24
|
+
# Write fake Rakefile for rake since Makefile isn't used
|
25
|
+
File.open(File.join(File.dirname(__FILE__), 'Rakefile'), 'w') do |f|
|
26
|
+
f.write("task :default" + $/)
|
27
|
+
end
|
@@ -30,6 +30,8 @@ module SidekiqSpy
|
|
30
30
|
@window = Curses::Window.new(@height, @width, @top, @left)
|
31
31
|
|
32
32
|
@subpanels = build_subpanels(structure)
|
33
|
+
|
34
|
+
@spies = {} # data sources for #structure
|
33
35
|
end
|
34
36
|
|
35
37
|
def close
|
@@ -37,6 +39,8 @@ module SidekiqSpy
|
|
37
39
|
end
|
38
40
|
|
39
41
|
def refresh
|
42
|
+
@spies.each { |_, s| s.refresh } # refresh data sources
|
43
|
+
|
40
44
|
@subpanels.each(&:refresh) # build changes
|
41
45
|
|
42
46
|
@window.refresh # push changes to window
|
@@ -4,20 +4,12 @@ module SidekiqSpy
|
|
4
4
|
class Queues < Display::Panel
|
5
5
|
|
6
6
|
def initialize(height, width, top, left)
|
7
|
-
|
7
|
+
super(height, width, top, left, structure(height), :divider_r => " ")
|
8
8
|
|
9
|
-
|
9
|
+
@spies[:queues] = Spy::Queues.new
|
10
10
|
end
|
11
11
|
|
12
|
-
def
|
13
|
-
@queues.refresh # refresh data feed
|
14
|
-
|
15
|
-
super
|
16
|
-
end
|
17
|
-
|
18
|
-
def structure
|
19
|
-
@queues = Spy::Queues.new
|
20
|
-
|
12
|
+
def structure(height)
|
21
13
|
# [
|
22
14
|
# [relative_column_width, data_left, data_right]
|
23
15
|
# ]
|
@@ -28,10 +20,10 @@ module SidekiqSpy
|
|
28
20
|
],
|
29
21
|
]
|
30
22
|
|
31
|
-
(0...(
|
23
|
+
(0...(height - 1)).each do |i|
|
32
24
|
s << [ # table row slots
|
33
|
-
[2, -> { @queues
|
34
|
-
[1, nil,
|
25
|
+
[2, -> { @spies[:queues][i][:name] }, nil],
|
26
|
+
[1, nil, -> { @spies[:queues][i][:size] }],
|
35
27
|
]
|
36
28
|
end
|
37
29
|
|
@@ -5,27 +5,27 @@ module SidekiqSpy
|
|
5
5
|
|
6
6
|
def initialize(height, width, top, left)
|
7
7
|
super(height, width, top, left, structure, :divider_r => "|")
|
8
|
+
|
9
|
+
@spies[:stats] = Spy::Stats.new
|
8
10
|
end
|
9
11
|
|
10
12
|
def structure
|
11
|
-
stats = Spy::Stats.new
|
12
|
-
|
13
13
|
# [
|
14
14
|
# [relative_column_width, data_left, data_right]
|
15
15
|
# ]
|
16
16
|
[
|
17
17
|
[
|
18
|
-
[2, t[:redis][:connection], -> { stats
|
19
|
-
[1, t[:redis][:namespace], -> { stats
|
18
|
+
[2, t[:redis][:connection], -> { @spies[:stats][:connection] }],
|
19
|
+
[1, t[:redis][:namespace], -> { @spies[:stats][:namespace] }],
|
20
20
|
],
|
21
21
|
[
|
22
|
-
[1, t[:redis][:version], -> { stats
|
23
|
-
[1, t[:redis][:uptime], -> { stats
|
24
|
-
[1, t[:redis][:connections], -> { stats
|
22
|
+
[1, t[:redis][:version], -> { @spies[:stats][:redis_version] }],
|
23
|
+
[1, t[:redis][:uptime], -> { @spies[:stats][:uptime] }],
|
24
|
+
[1, t[:redis][:connections], -> { @spies[:stats][:connections] }],
|
25
25
|
],
|
26
26
|
[
|
27
|
-
[1, t[:redis][:memory], -> { stats
|
28
|
-
[1, t[:redis][:memory_peak], -> { stats
|
27
|
+
[1, t[:redis][:memory], -> { @spies[:stats][:memory] }],
|
28
|
+
[1, t[:redis][:memory_peak], -> { @spies[:stats][:memory_peak] }],
|
29
29
|
[1, nil, nil],
|
30
30
|
],
|
31
31
|
]
|
@@ -4,20 +4,12 @@ module SidekiqSpy
|
|
4
4
|
class Retries < Display::Panel
|
5
5
|
|
6
6
|
def initialize(height, width, top, left)
|
7
|
-
|
7
|
+
super(height, width, top, left, structure(height), :divider_r => " ")
|
8
8
|
|
9
|
-
|
9
|
+
@spies[:retries] = Spy::Retries.new
|
10
10
|
end
|
11
11
|
|
12
|
-
def
|
13
|
-
@retries.refresh # refresh data feed
|
14
|
-
|
15
|
-
super
|
16
|
-
end
|
17
|
-
|
18
|
-
def structure
|
19
|
-
@retries = Spy::Retries.new
|
20
|
-
|
12
|
+
def structure(height)
|
21
13
|
# [
|
22
14
|
# [relative_column_width, data_left, data_right]
|
23
15
|
# ]
|
@@ -32,14 +24,14 @@ module SidekiqSpy
|
|
32
24
|
],
|
33
25
|
]
|
34
26
|
|
35
|
-
(0...(
|
27
|
+
(0...(height - 1)).each do |i|
|
36
28
|
s << [ # table row slots
|
37
|
-
[1, -> { @retries
|
38
|
-
[1, -> { @retries
|
39
|
-
[1, -> { @retries
|
40
|
-
[1, -> { @retries
|
41
|
-
[1, -> { @retries
|
42
|
-
[1, nil,
|
29
|
+
[1, -> { @spies[:retries][i][:next_at] }, nil],
|
30
|
+
[1, -> { @spies[:retries][i][:count] }, nil],
|
31
|
+
[1, -> { @spies[:retries][i][:queue] }, nil],
|
32
|
+
[1, -> { @spies[:retries][i][:class] }, nil],
|
33
|
+
[1, -> { @spies[:retries][i][:args] }, nil],
|
34
|
+
[1, nil, -> { @spies[:retries][i][:error_class] }],
|
43
35
|
]
|
44
36
|
end
|
45
37
|
|
@@ -4,20 +4,12 @@ module SidekiqSpy
|
|
4
4
|
class Schedules < Display::Panel
|
5
5
|
|
6
6
|
def initialize(height, width, top, left)
|
7
|
-
|
7
|
+
super(height, width, top, left, structure(height), :divider_r => " ")
|
8
8
|
|
9
|
-
|
9
|
+
@spies[:schedules] = Spy::Schedules.new
|
10
10
|
end
|
11
11
|
|
12
|
-
def
|
13
|
-
@schedules.refresh # refresh data feed
|
14
|
-
|
15
|
-
super
|
16
|
-
end
|
17
|
-
|
18
|
-
def structure
|
19
|
-
@schedules = Spy::Schedules.new
|
20
|
-
|
12
|
+
def structure(height)
|
21
13
|
# [
|
22
14
|
# [relative_column_width, data_left, data_right]
|
23
15
|
# ]
|
@@ -30,12 +22,12 @@ module SidekiqSpy
|
|
30
22
|
],
|
31
23
|
]
|
32
24
|
|
33
|
-
(0...(
|
25
|
+
(0...(height - 1)).each do |i|
|
34
26
|
s << [ # table row slots
|
35
|
-
[1, -> { @schedules
|
36
|
-
[1, -> { @schedules
|
37
|
-
[1, -> { @schedules
|
38
|
-
[1, nil,
|
27
|
+
[1, -> { @spies[:schedules][i][:scheduled_at] }, nil],
|
28
|
+
[1, -> { @spies[:schedules][i][:queue] }, nil],
|
29
|
+
[1, -> { @spies[:schedules][i][:class] }, nil],
|
30
|
+
[1, nil, -> { @spies[:schedules][i][:args] }],
|
39
31
|
]
|
40
32
|
end
|
41
33
|
|
@@ -5,24 +5,24 @@ module SidekiqSpy
|
|
5
5
|
|
6
6
|
def initialize(height, width, top, left)
|
7
7
|
super(height, width, top, left, structure, :divider_r => "|")
|
8
|
+
|
9
|
+
@spies[:stats] = Spy::Stats.new
|
8
10
|
end
|
9
11
|
|
10
12
|
def structure
|
11
|
-
stats = Spy::Stats.new
|
12
|
-
|
13
13
|
# [
|
14
14
|
# [relative_column_width, data_left, data_right]
|
15
15
|
# ]
|
16
16
|
[
|
17
17
|
[
|
18
|
-
[1, t[:sidekiq][:busy], -> { stats
|
19
|
-
[1, t[:sidekiq][:retries], -> { stats
|
20
|
-
[1, t[:sidekiq][:processed], -> { stats
|
18
|
+
[1, t[:sidekiq][:busy], -> { @spies[:stats][:busy] }],
|
19
|
+
[1, t[:sidekiq][:retries], -> { @spies[:stats][:retries] }],
|
20
|
+
[1, t[:sidekiq][:processed], -> { @spies[:stats][:processed] }],
|
21
21
|
],
|
22
22
|
[
|
23
|
-
[1, t[:sidekiq][:enqueued], -> { stats
|
24
|
-
[1, t[:sidekiq][:scheduled], -> { stats
|
25
|
-
[1, t[:sidekiq][:failed], -> { stats
|
23
|
+
[1, t[:sidekiq][:enqueued], -> { @spies[:stats][:enqueued] }],
|
24
|
+
[1, t[:sidekiq][:scheduled], -> { @spies[:stats][:scheduled] }],
|
25
|
+
[1, t[:sidekiq][:failed], -> { @spies[:stats][:failed] }],
|
26
26
|
],
|
27
27
|
]
|
28
28
|
end
|
@@ -4,20 +4,12 @@ module SidekiqSpy
|
|
4
4
|
class Workers < Display::Panel
|
5
5
|
|
6
6
|
def initialize(height, width, top, left)
|
7
|
-
|
7
|
+
super(height, width, top, left, structure(height), :divider_r => " ")
|
8
8
|
|
9
|
-
|
9
|
+
@spies[:workers] = Spy::Workers.new
|
10
10
|
end
|
11
11
|
|
12
|
-
def
|
13
|
-
@workers.refresh # refresh data feed
|
14
|
-
|
15
|
-
super
|
16
|
-
end
|
17
|
-
|
18
|
-
def structure
|
19
|
-
@workers = Spy::Workers.new
|
20
|
-
|
12
|
+
def structure(height)
|
21
13
|
# [
|
22
14
|
# [relative_column_width, data_left, data_right]
|
23
15
|
# ]
|
@@ -31,13 +23,13 @@ module SidekiqSpy
|
|
31
23
|
],
|
32
24
|
]
|
33
25
|
|
34
|
-
(0...(
|
26
|
+
(0...(height - 1)).each do |i|
|
35
27
|
s << [ # table row slots
|
36
|
-
[2, -> { @workers
|
37
|
-
[1, -> { @workers
|
38
|
-
[1, -> { @workers
|
39
|
-
[1, -> { @workers
|
40
|
-
[1, nil,
|
28
|
+
[2, -> { @spies[:workers][i][:name] }, nil],
|
29
|
+
[1, -> { @spies[:workers][i][:queue] }, nil],
|
30
|
+
[1, -> { @spies[:workers][i][:class] }, nil],
|
31
|
+
[1, -> { @spies[:workers][i][:args] }, nil],
|
32
|
+
[1, nil, -> { @spies[:workers][i][:started_at] }],
|
41
33
|
]
|
42
34
|
end
|
43
35
|
|
@@ -5,7 +5,7 @@ module SidekiqSpy
|
|
5
5
|
module Spy
|
6
6
|
class Queues
|
7
7
|
|
8
|
-
|
8
|
+
include Spy::Dataspyable
|
9
9
|
|
10
10
|
def initialize
|
11
11
|
@stats = Sidekiq::Stats.new
|
@@ -14,10 +14,10 @@ module SidekiqSpy
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def refresh
|
17
|
-
h =
|
17
|
+
h = []
|
18
18
|
|
19
19
|
@stats.queues.each do |queue, size|
|
20
|
-
h
|
20
|
+
h << {
|
21
21
|
:name => queue,
|
22
22
|
:size => size,
|
23
23
|
}
|
@@ -5,61 +5,40 @@ module SidekiqSpy
|
|
5
5
|
module Spy
|
6
6
|
class Stats
|
7
7
|
|
8
|
+
include Spy::Dataspyable
|
9
|
+
|
8
10
|
def initialize
|
9
11
|
@stats = Sidekiq::Stats.new
|
10
12
|
@workers = Sidekiq::Workers.new
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
redis
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
def busy
|
42
|
-
@workers.size
|
43
|
-
end
|
44
|
-
|
45
|
-
def enqueued
|
46
|
-
@stats.enqueued
|
47
|
-
end
|
48
|
-
|
49
|
-
def retries
|
50
|
-
@stats.retry_size
|
51
|
-
end
|
52
|
-
|
53
|
-
def scheduled
|
54
|
-
@stats.scheduled_size
|
55
|
-
end
|
56
|
-
|
57
|
-
def processed
|
58
|
-
@stats.processed
|
59
|
-
end
|
60
|
-
|
61
|
-
def failed
|
62
|
-
@stats.failed
|
13
|
+
|
14
|
+
refresh
|
15
|
+
end
|
16
|
+
|
17
|
+
def refresh
|
18
|
+
h = {}
|
19
|
+
|
20
|
+
redis do |c|
|
21
|
+
h.merge!({
|
22
|
+
:connection => "#{c.client.location}/#{c.client.db}",
|
23
|
+
:namespace => (c.respond_to?(:namespace) ? c.namespace : ""),
|
24
|
+
:redis_version => c.info['redis_version'],
|
25
|
+
:uptime => c.info['uptime_in_days'],
|
26
|
+
:connections => c.info['connected_clients'],
|
27
|
+
:memory => c.info['used_memory_human'],
|
28
|
+
:memory_peak => c.info['used_memory_peak_human'],
|
29
|
+
})
|
30
|
+
end
|
31
|
+
|
32
|
+
h.merge!({
|
33
|
+
:busy => @workers.size,
|
34
|
+
:enqueued => @stats.enqueued,
|
35
|
+
:retries => @stats.retry_size,
|
36
|
+
:scheduled => @stats.scheduled_size,
|
37
|
+
:processed => @stats.processed,
|
38
|
+
:failed => @stats.failed,
|
39
|
+
})
|
40
|
+
|
41
|
+
@data = h
|
63
42
|
end
|
64
43
|
|
65
44
|
private
|
@@ -6,7 +6,7 @@ module SidekiqSpy
|
|
6
6
|
module Spy
|
7
7
|
class Workers
|
8
8
|
|
9
|
-
|
9
|
+
include Spy::Dataspyable
|
10
10
|
|
11
11
|
def initialize
|
12
12
|
@workers = Sidekiq::Workers.new
|
@@ -15,10 +15,10 @@ module SidekiqSpy
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def refresh
|
18
|
-
h =
|
18
|
+
h = []
|
19
19
|
|
20
20
|
@workers.each do |worker, msg|
|
21
|
-
h
|
21
|
+
h << {
|
22
22
|
:name => worker,
|
23
23
|
:queue => msg['queue'],
|
24
24
|
:class => msg['payload']['class'],
|
data/lib/sidekiq-spy/version.rb
CHANGED
data/lib/sidekiq-spy.rb
CHANGED
@@ -4,6 +4,7 @@ require File.expand_path('../sidekiq-spy/config', __FILE__)
|
|
4
4
|
require File.expand_path('../sidekiq-spy/translatable', __FILE__)
|
5
5
|
require File.expand_path('../sidekiq-spy/app', __FILE__)
|
6
6
|
|
7
|
+
require File.expand_path('../sidekiq-spy/spy/dataspyable', __FILE__)
|
7
8
|
require File.expand_path('../sidekiq-spy/spy/stats', __FILE__)
|
8
9
|
require File.expand_path('../sidekiq-spy/spy/workers', __FILE__)
|
9
10
|
require File.expand_path('../sidekiq-spy/spy/queues', __FILE__)
|
data/sidekiq-spy.gemspec
CHANGED
@@ -18,9 +18,24 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
+
spec.extensions += [
|
22
|
+
'ext/mkrf_conf.rb',
|
23
|
+
]
|
24
|
+
|
21
25
|
spec.add_dependency "sidekiq", "~> 2.15"
|
26
|
+
# spec.add_dependency "curses", "~> 1.0" # SEE: ext/mkrf_conf.rb
|
22
27
|
|
23
|
-
spec.add_development_dependency "bundler", "~> 1.3"
|
28
|
+
spec.add_development_dependency "bundler", "~> 1.3", "!= 1.5.0"
|
24
29
|
spec.add_development_dependency "rake"
|
25
30
|
spec.add_development_dependency "mocha", "~> 0.14"
|
31
|
+
|
32
|
+
if RUBY_VERSION >= '2.1'
|
33
|
+
# This is only for development; note that RUBY_VERSION is evaluated at
|
34
|
+
# build-time, not install-time. ext/mkrf_conf.rb takes care of the install-
|
35
|
+
# time dependency; this takes care of the development-time dependency.
|
36
|
+
# Note that this doesn't work in Gemfile, since :ruby_21 is not a valid
|
37
|
+
# platform in Ruby 1.9.3 .
|
38
|
+
# BEWARE: repetition; SEE: ext/mkrf_conf.rb
|
39
|
+
spec.add_development_dependency "curses", "~> 1.0"
|
40
|
+
end
|
26
41
|
end
|
@@ -13,23 +13,23 @@ describe SidekiqSpy::Spy::Queues do
|
|
13
13
|
'queue1' => 42,
|
14
14
|
}
|
15
15
|
|
16
|
-
@spy_queues_data =
|
17
|
-
|
16
|
+
@spy_queues_data = [
|
17
|
+
{
|
18
18
|
:name => 'queue1',
|
19
19
|
:size => 42,
|
20
|
-
}
|
21
|
-
|
20
|
+
},
|
21
|
+
]
|
22
22
|
|
23
23
|
@sidekiq_queues_data2 = {
|
24
24
|
'queue2' => 1764,
|
25
25
|
}
|
26
26
|
|
27
|
-
@spy_queues_data2 =
|
28
|
-
|
27
|
+
@spy_queues_data2 = [
|
28
|
+
{
|
29
29
|
:name => 'queue2',
|
30
30
|
:size => 1764,
|
31
|
-
}
|
32
|
-
|
31
|
+
},
|
32
|
+
]
|
33
33
|
|
34
34
|
Sidekiq::Stats.stubs(:new).returns(stub(
|
35
35
|
:queues => @sidekiq_queues_data
|
@@ -39,8 +39,8 @@ describe SidekiqSpy::Spy::Queues do
|
|
39
39
|
end
|
40
40
|
|
41
41
|
describe "#initialize" do
|
42
|
-
it "sets
|
43
|
-
@queues.
|
42
|
+
it "sets list of queues" do
|
43
|
+
@queues.to_a.must_equal(@spy_queues_data)
|
44
44
|
end
|
45
45
|
end
|
46
46
|
|
@@ -48,7 +48,7 @@ describe SidekiqSpy::Spy::Queues do
|
|
48
48
|
it "doesn't refresh if not called" do
|
49
49
|
@sidekiq_queues_data.merge!(@sidekiq_queues_data2)
|
50
50
|
|
51
|
-
@queues.
|
51
|
+
@queues.to_a.must_equal(@spy_queues_data)
|
52
52
|
end
|
53
53
|
|
54
54
|
it "refreshes if called" do
|
@@ -56,7 +56,7 @@ describe SidekiqSpy::Spy::Queues do
|
|
56
56
|
|
57
57
|
@queues.refresh
|
58
58
|
|
59
|
-
@queues.
|
59
|
+
@queues.to_a.must_equal(@spy_queues_data + @spy_queues_data2)
|
60
60
|
end
|
61
61
|
end
|
62
62
|
|
@@ -59,8 +59,8 @@ describe SidekiqSpy::Spy::Retries do
|
|
59
59
|
end
|
60
60
|
|
61
61
|
describe "#initialize" do
|
62
|
-
it "sets
|
63
|
-
@retries.
|
62
|
+
it "sets list of retries" do
|
63
|
+
@retries.to_a.must_equal(@spy_retries_data)
|
64
64
|
end
|
65
65
|
end
|
66
66
|
|
@@ -68,7 +68,7 @@ describe SidekiqSpy::Spy::Retries do
|
|
68
68
|
it "doesn't refresh if not called" do
|
69
69
|
@sidekiq_retries_data.push(*@sidekiq_retries_data2)
|
70
70
|
|
71
|
-
@retries.
|
71
|
+
@retries.to_a.must_equal(@spy_retries_data)
|
72
72
|
end
|
73
73
|
|
74
74
|
it "refreshes if called" do
|
@@ -76,7 +76,7 @@ describe SidekiqSpy::Spy::Retries do
|
|
76
76
|
|
77
77
|
@retries.refresh
|
78
78
|
|
79
|
-
@retries.
|
79
|
+
@retries.to_a.must_equal(@spy_retries_data + @spy_retries_data2)
|
80
80
|
end
|
81
81
|
end
|
82
82
|
|
@@ -49,8 +49,8 @@ describe SidekiqSpy::Spy::Schedules do
|
|
49
49
|
end
|
50
50
|
|
51
51
|
describe "#initialize" do
|
52
|
-
it "sets
|
53
|
-
@schedules.
|
52
|
+
it "sets list of schedules" do
|
53
|
+
@schedules.to_a.must_equal(@spy_schedules_data)
|
54
54
|
end
|
55
55
|
end
|
56
56
|
|
@@ -58,7 +58,7 @@ describe SidekiqSpy::Spy::Schedules do
|
|
58
58
|
it "doesn't refresh if not called" do
|
59
59
|
@sidekiq_schedules_data.push(*@sidekiq_schedules_data2)
|
60
60
|
|
61
|
-
@schedules.
|
61
|
+
@schedules.to_a.must_equal(@spy_schedules_data)
|
62
62
|
end
|
63
63
|
|
64
64
|
it "refreshes if called" do
|
@@ -66,7 +66,7 @@ describe SidekiqSpy::Spy::Schedules do
|
|
66
66
|
|
67
67
|
@schedules.refresh
|
68
68
|
|
69
|
-
@schedules.
|
69
|
+
@schedules.to_a.must_equal(@spy_schedules_data + @spy_schedules_data2)
|
70
70
|
end
|
71
71
|
end
|
72
72
|
|
@@ -39,73 +39,73 @@ describe SidekiqSpy::Spy::Stats do
|
|
39
39
|
|
40
40
|
describe "#connection" do
|
41
41
|
it "returns stat connection" do
|
42
|
-
@stats
|
42
|
+
@stats[:connection].must_equal 'da.example.com:237/42'
|
43
43
|
end
|
44
44
|
end
|
45
45
|
|
46
46
|
describe "#namespace" do
|
47
47
|
it "returns stat namespace" do
|
48
|
-
@stats
|
48
|
+
@stats[:namespace].must_equal 'resque'
|
49
49
|
end
|
50
50
|
end
|
51
51
|
|
52
52
|
describe "#uptime" do
|
53
53
|
it "returns stat uptime" do
|
54
|
-
@stats
|
54
|
+
@stats[:uptime].must_equal '7'
|
55
55
|
end
|
56
56
|
end
|
57
57
|
|
58
58
|
describe "#connections" do
|
59
59
|
it "returns stat connections" do
|
60
|
-
@stats
|
60
|
+
@stats[:connections].must_equal '8'
|
61
61
|
end
|
62
62
|
end
|
63
63
|
|
64
64
|
describe "#memory" do
|
65
65
|
it "returns stat memory" do
|
66
|
-
@stats
|
66
|
+
@stats[:memory].must_equal '5.16M'
|
67
67
|
end
|
68
68
|
end
|
69
69
|
|
70
70
|
describe "#memory_peak" do
|
71
71
|
it "returns stat memory_peak" do
|
72
|
-
@stats
|
72
|
+
@stats[:memory_peak].must_equal '5.14M'
|
73
73
|
end
|
74
74
|
end
|
75
75
|
|
76
76
|
describe "#busy" do
|
77
77
|
it "returns stat busy" do
|
78
|
-
@stats
|
78
|
+
@stats[:busy].must_equal 162165179294
|
79
79
|
end
|
80
80
|
end
|
81
81
|
|
82
82
|
describe "#enqueued" do
|
83
83
|
it "returns stat enqueued" do
|
84
|
-
@stats
|
84
|
+
@stats[:enqueued].must_equal 16776977673
|
85
85
|
end
|
86
86
|
end
|
87
87
|
|
88
88
|
describe "#retries" do
|
89
89
|
it "returns stat retries" do
|
90
|
-
@stats
|
90
|
+
@stats[:retries].must_equal 924984826746
|
91
91
|
end
|
92
92
|
end
|
93
93
|
|
94
94
|
describe "#scheduled" do
|
95
95
|
it "returns stat scheduled" do
|
96
|
-
@stats
|
96
|
+
@stats[:scheduled].must_equal 317321542620
|
97
97
|
end
|
98
98
|
end
|
99
99
|
|
100
100
|
describe "#processed" do
|
101
101
|
it "returns stat processed" do
|
102
|
-
@stats
|
102
|
+
@stats[:processed].must_equal 923531545885
|
103
103
|
end
|
104
104
|
end
|
105
105
|
|
106
106
|
describe "#failed" do
|
107
107
|
it "returns stat failed" do
|
108
|
-
@stats
|
108
|
+
@stats[:failed].must_equal 779187529140
|
109
109
|
end
|
110
110
|
end
|
111
111
|
|
@@ -20,15 +20,15 @@ describe SidekiqSpy::Spy::Workers do
|
|
20
20
|
},
|
21
21
|
}
|
22
22
|
|
23
|
-
@spy_workers_data =
|
24
|
-
|
23
|
+
@spy_workers_data = [
|
24
|
+
{
|
25
25
|
:name => 'worker1',
|
26
26
|
:queue => 'Q',
|
27
27
|
:class => 'Geometry',
|
28
28
|
:args => ['Euclid', 360],
|
29
|
-
:started_at => Time.parse('2325-01-01 00:03:25 +0000')
|
30
|
-
}
|
31
|
-
|
29
|
+
:started_at => Time.parse('2325-01-01 00:03:25 +0000'),
|
30
|
+
},
|
31
|
+
]
|
32
32
|
|
33
33
|
@sidekiq_workers_data2 = {
|
34
34
|
'worker2' => {
|
@@ -41,15 +41,15 @@ describe SidekiqSpy::Spy::Workers do
|
|
41
41
|
},
|
42
42
|
}
|
43
43
|
|
44
|
-
@spy_workers_data2 =
|
45
|
-
|
44
|
+
@spy_workers_data2 = [
|
45
|
+
{
|
46
46
|
:name => 'worker2',
|
47
47
|
:queue => 'Queueueue',
|
48
48
|
:class => 'Elements',
|
49
49
|
:args => ['Lehrer', 102],
|
50
|
-
:started_at => Time.parse('1928-04-09 00:00:00 +0000')
|
51
|
-
}
|
52
|
-
|
50
|
+
:started_at => Time.parse('1928-04-09 00:00:00 +0000'),
|
51
|
+
},
|
52
|
+
]
|
53
53
|
|
54
54
|
Sidekiq::Workers.stubs(:new).returns(@sidekiq_workers_data)
|
55
55
|
|
@@ -57,8 +57,8 @@ describe SidekiqSpy::Spy::Workers do
|
|
57
57
|
end
|
58
58
|
|
59
59
|
describe "#initialize" do
|
60
|
-
it "sets
|
61
|
-
@workers.
|
60
|
+
it "sets list of workers" do
|
61
|
+
@workers.to_a.must_equal(@spy_workers_data)
|
62
62
|
end
|
63
63
|
end
|
64
64
|
|
@@ -66,7 +66,7 @@ describe SidekiqSpy::Spy::Workers do
|
|
66
66
|
it "doesn't refresh if not called" do
|
67
67
|
@sidekiq_workers_data.merge!(@sidekiq_workers_data2)
|
68
68
|
|
69
|
-
@workers.
|
69
|
+
@workers.to_a.must_equal(@spy_workers_data)
|
70
70
|
end
|
71
71
|
|
72
72
|
it "refreshes if called" do
|
@@ -74,7 +74,7 @@ describe SidekiqSpy::Spy::Workers do
|
|
74
74
|
|
75
75
|
@workers.refresh
|
76
76
|
|
77
|
-
@workers.
|
77
|
+
@workers.to_a.must_equal(@spy_workers_data + @spy_workers_data2)
|
78
78
|
end
|
79
79
|
end
|
80
80
|
|
metadata
CHANGED
@@ -1,90 +1,112 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sidekiq-spy
|
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
|
- tiredpixel
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-01-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sidekiq
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '2.15'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '2.15'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - ~>
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '1.3'
|
34
|
+
- - "!="
|
35
|
+
- !ruby/object:Gem::Version
|
36
|
+
version: 1.5.0
|
34
37
|
type: :development
|
35
38
|
prerelease: false
|
36
39
|
version_requirements: !ruby/object:Gem::Requirement
|
37
40
|
requirements:
|
38
|
-
- - ~>
|
41
|
+
- - "~>"
|
39
42
|
- !ruby/object:Gem::Version
|
40
43
|
version: '1.3'
|
44
|
+
- - "!="
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: 1.5.0
|
41
47
|
- !ruby/object:Gem::Dependency
|
42
48
|
name: rake
|
43
49
|
requirement: !ruby/object:Gem::Requirement
|
44
50
|
requirements:
|
45
|
-
- -
|
51
|
+
- - ">="
|
46
52
|
- !ruby/object:Gem::Version
|
47
53
|
version: '0'
|
48
54
|
type: :development
|
49
55
|
prerelease: false
|
50
56
|
version_requirements: !ruby/object:Gem::Requirement
|
51
57
|
requirements:
|
52
|
-
- -
|
58
|
+
- - ">="
|
53
59
|
- !ruby/object:Gem::Version
|
54
60
|
version: '0'
|
55
61
|
- !ruby/object:Gem::Dependency
|
56
62
|
name: mocha
|
57
63
|
requirement: !ruby/object:Gem::Requirement
|
58
64
|
requirements:
|
59
|
-
- - ~>
|
65
|
+
- - "~>"
|
60
66
|
- !ruby/object:Gem::Version
|
61
67
|
version: '0.14'
|
62
68
|
type: :development
|
63
69
|
prerelease: false
|
64
70
|
version_requirements: !ruby/object:Gem::Requirement
|
65
71
|
requirements:
|
66
|
-
- - ~>
|
72
|
+
- - "~>"
|
67
73
|
- !ruby/object:Gem::Version
|
68
74
|
version: '0.14'
|
75
|
+
- !ruby/object:Gem::Dependency
|
76
|
+
name: curses
|
77
|
+
requirement: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - "~>"
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: '1.0'
|
82
|
+
type: :development
|
83
|
+
prerelease: false
|
84
|
+
version_requirements: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - "~>"
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '1.0'
|
69
89
|
description: Sidekiq monitoring in the console. A bit like Sidekiq::Web. But without
|
70
90
|
the web.
|
71
91
|
email:
|
72
92
|
- tp@tiredpixel.com
|
73
93
|
executables:
|
74
94
|
- sidekiq-spy
|
75
|
-
extensions:
|
95
|
+
extensions:
|
96
|
+
- ext/mkrf_conf.rb
|
76
97
|
extra_rdoc_files: []
|
77
98
|
files:
|
78
|
-
- .gitignore
|
79
|
-
- .ruby-gemset
|
80
|
-
- .ruby-version
|
81
|
-
- .travis.yml
|
99
|
+
- ".gitignore"
|
100
|
+
- ".ruby-gemset"
|
101
|
+
- ".ruby-version"
|
102
|
+
- ".travis.yml"
|
82
103
|
- CHANGELOG.md
|
83
104
|
- Gemfile
|
84
105
|
- LICENSE.txt
|
85
106
|
- README.md
|
86
107
|
- Rakefile
|
87
108
|
- bin/sidekiq-spy
|
109
|
+
- ext/mkrf_conf.rb
|
88
110
|
- lib/sidekiq-spy.rb
|
89
111
|
- lib/sidekiq-spy/app.rb
|
90
112
|
- lib/sidekiq-spy/config.rb
|
@@ -98,6 +120,7 @@ files:
|
|
98
120
|
- lib/sidekiq-spy/display/panels/workers.rb
|
99
121
|
- lib/sidekiq-spy/display/screen.rb
|
100
122
|
- lib/sidekiq-spy/display/subpanel.rb
|
123
|
+
- lib/sidekiq-spy/spy/dataspyable.rb
|
101
124
|
- lib/sidekiq-spy/spy/queues.rb
|
102
125
|
- lib/sidekiq-spy/spy/retries.rb
|
103
126
|
- lib/sidekiq-spy/spy/schedules.rb
|
@@ -130,17 +153,17 @@ require_paths:
|
|
130
153
|
- lib
|
131
154
|
required_ruby_version: !ruby/object:Gem::Requirement
|
132
155
|
requirements:
|
133
|
-
- -
|
156
|
+
- - ">="
|
134
157
|
- !ruby/object:Gem::Version
|
135
158
|
version: '0'
|
136
159
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
137
160
|
requirements:
|
138
|
-
- -
|
161
|
+
- - ">="
|
139
162
|
- !ruby/object:Gem::Version
|
140
163
|
version: '0'
|
141
164
|
requirements: []
|
142
165
|
rubyforge_project:
|
143
|
-
rubygems_version: 2.
|
166
|
+
rubygems_version: 2.2.0
|
144
167
|
signing_key:
|
145
168
|
specification_version: 4
|
146
169
|
summary: Sidekiq monitoring in the console.
|