sidekiq-spy 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
  SHA1:
3
- metadata.gz: b36dea1a5c807a96adeb6f29737175c479fa5e17
4
- data.tar.gz: b6f96e42e80c5af6a31c7ee959c2b137c5ab68b4
3
+ metadata.gz: 7c1eeb7d31dc8ab0fc09db02331d9116b847af2d
4
+ data.tar.gz: 6fcef234faf6569e59c79195bcd657a5751e82ed
5
5
  SHA512:
6
- metadata.gz: 675ab03fb9c9ca6069c8c92f6bac13c829be63b83f6e1fcb8c0ac36c4e34e20c28bf3b6f1a83039d79a1d2902a2fac34015cb34103843e862a5d8c419c20b138
7
- data.tar.gz: ed53c6bd5d7a6ec01e18a91e056dee64fe3c8067dbef7d89614a439d84e2c0aa33a15f14253a1b0fb56fdcc8cf94231c5cf76aea97cfc6385636ca78bc53028e
6
+ metadata.gz: 5495713387031f47cdea190c120b51a1226a05b2cbf95e7dc6b83310f40bf0034c5dfc407d01445df23420953b4833d460fdb40dadde42d1af45d3079552d057
7
+ data.tar.gz: 868f3381360522b426f5ae2ac0565cc3e7860c55d0a6afb449fc2e2104c70529473fafbe49163ad0e9bb59a6dd5af0526f52f5821baa3456e6af98ce1b6c386d
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- ruby-2.0.0
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-19mode
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-19mode
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
@@ -1,3 +1,6 @@
1
+ require 'time'
2
+
3
+
1
4
  module SidekiqSpy
2
5
  module Display
3
6
  module Panels
@@ -4,20 +4,12 @@ module SidekiqSpy
4
4
  class Queues < Display::Panel
5
5
 
6
6
  def initialize(height, width, top, left)
7
- @height = height # #structure needs this before #initialize ends
7
+ super(height, width, top, left, structure(height), :divider_r => " ")
8
8
 
9
- super(height, width, top, left, structure, :divider_r => " ")
9
+ @spies[:queues] = Spy::Queues.new
10
10
  end
11
11
 
12
- def refresh
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...(@height - 1)).each do |i|
23
+ (0...(height - 1)).each do |i|
32
24
  s << [ # table row slots
33
- [2, -> { @queues.data.values[i][:name] rescue nil }, nil],
34
- [1, nil, -> { @queues.data.values[i][:size] rescue 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.connection }],
19
- [1, t[:redis][:namespace], -> { stats.namespace }],
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.redis_version }],
23
- [1, t[:redis][:uptime], -> { stats.uptime }],
24
- [1, t[:redis][:connections], -> { stats.connections }],
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.memory }],
28
- [1, t[:redis][:memory_peak], -> { stats.memory_peak }],
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
- @height = height # #structure needs this before #initialize ends
7
+ super(height, width, top, left, structure(height), :divider_r => " ")
8
8
 
9
- super(height, width, top, left, structure, :divider_r => " ")
9
+ @spies[:retries] = Spy::Retries.new
10
10
  end
11
11
 
12
- def refresh
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...(@height - 1)).each do |i|
27
+ (0...(height - 1)).each do |i|
36
28
  s << [ # table row slots
37
- [1, -> { @retries.data[i][:next_at] rescue nil }, nil],
38
- [1, -> { @retries.data[i][:count] rescue nil }, nil],
39
- [1, -> { @retries.data[i][:queue] rescue nil }, nil],
40
- [1, -> { @retries.data[i][:class] rescue nil }, nil],
41
- [1, -> { @retries.data[i][:args] rescue nil }, nil],
42
- [1, nil, -> { @retries.data[i][:error_class] rescue 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
- @height = height # #structure needs this before #initialize ends
7
+ super(height, width, top, left, structure(height), :divider_r => " ")
8
8
 
9
- super(height, width, top, left, structure, :divider_r => " ")
9
+ @spies[:schedules] = Spy::Schedules.new
10
10
  end
11
11
 
12
- def refresh
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...(@height - 1)).each do |i|
25
+ (0...(height - 1)).each do |i|
34
26
  s << [ # table row slots
35
- [1, -> { @schedules.data[i][:scheduled_at] rescue nil }, nil],
36
- [1, -> { @schedules.data[i][:queue] rescue nil }, nil],
37
- [1, -> { @schedules.data[i][:class] rescue nil }, nil],
38
- [1, nil, -> { @schedules.data[i][:args] rescue 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.busy }],
19
- [1, t[:sidekiq][:retries], -> { stats.retries }],
20
- [1, t[:sidekiq][:processed], -> { stats.processed }],
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.enqueued }],
24
- [1, t[:sidekiq][:scheduled], -> { stats.scheduled }],
25
- [1, t[:sidekiq][:failed], -> { stats.failed }],
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
- @height = height # #structure needs this before #initialize ends
7
+ super(height, width, top, left, structure(height), :divider_r => " ")
8
8
 
9
- super(height, width, top, left, structure, :divider_r => " ")
9
+ @spies[:workers] = Spy::Workers.new
10
10
  end
11
11
 
12
- def refresh
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...(@height - 1)).each do |i|
26
+ (0...(height - 1)).each do |i|
35
27
  s << [ # table row slots
36
- [2, -> { @workers.data.values[i][:name] rescue nil }, nil],
37
- [1, -> { @workers.data.values[i][:queue] rescue nil }, nil],
38
- [1, -> { @workers.data.values[i][:class] rescue nil }, nil],
39
- [1, -> { @workers.data.values[i][:args] rescue nil }, nil],
40
- [1, nil, -> { @workers.data.values[i][:started_at] rescue 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
 
@@ -0,0 +1,17 @@
1
+ module SidekiqSpy
2
+ module Spy
3
+ module Dataspyable
4
+
5
+ include Enumerable
6
+
7
+ def each(&block)
8
+ @data.each(&block)
9
+ end
10
+
11
+ def [](key)
12
+ @data[key] || {}
13
+ end
14
+
15
+ end
16
+ end
17
+ end
@@ -5,7 +5,7 @@ module SidekiqSpy
5
5
  module Spy
6
6
  class Queues
7
7
 
8
- attr_reader :data
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[queue] = {
20
+ h << {
21
21
  :name => queue,
22
22
  :size => size,
23
23
  }
@@ -1,4 +1,3 @@
1
- require 'time'
2
1
  require 'sidekiq'
3
2
 
4
3
 
@@ -6,7 +5,7 @@ module SidekiqSpy
6
5
  module Spy
7
6
  class Retries
8
7
 
9
- attr_reader :data
8
+ include Spy::Dataspyable
10
9
 
11
10
  def initialize
12
11
  @retries = Sidekiq::RetrySet.new
@@ -5,7 +5,7 @@ module SidekiqSpy
5
5
  module Spy
6
6
  class Schedules
7
7
 
8
- attr_reader :data
8
+ include Spy::Dataspyable
9
9
 
10
10
  def initialize
11
11
  @schedules = Sidekiq::ScheduledSet.new
@@ -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
- end
12
-
13
- def connection
14
- redis { |c| "#{c.client.location}/#{c.client.db}" }
15
- end
16
-
17
- def namespace
18
- redis { |c| c.namespace if c.respond_to?(:namespace) }
19
- end
20
-
21
- def redis_version
22
- redis { |c| c.info['redis_version'] }
23
- end
24
-
25
- def uptime
26
- redis { |c| c.info['uptime_in_days'] }
27
- end
28
-
29
- def connections
30
- redis { |c| c.info['connected_clients'] }
31
- end
32
-
33
- def memory
34
- redis { |c| c.info['used_memory_human'] }
35
- end
36
-
37
- def memory_peak
38
- redis { |c| c.info['used_memory_peak_human'] }
39
- end
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
- attr_reader :data
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[worker] = {
21
+ h << {
22
22
  :name => worker,
23
23
  :queue => msg['queue'],
24
24
  :class => msg['payload']['class'],
@@ -1,5 +1,5 @@
1
1
  module SidekiqSpy
2
2
 
3
- VERSION = '0.3.0'
3
+ VERSION = '0.3.1'
4
4
 
5
5
  end
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
- 'queue1' => {
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
- 'queue2' => {
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 data list of queues" do
43
- @queues.data.must_equal(@spy_queues_data)
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.data.must_equal(@spy_queues_data)
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.data.must_equal(@spy_queues_data.merge(@spy_queues_data2))
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 data list of retries" do
63
- @retries.data.must_equal(@spy_retries_data)
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.data.must_equal(@spy_retries_data)
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.data.must_equal(@spy_retries_data + @spy_retries_data2)
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 data list of schedules" do
53
- @schedules.data.must_equal(@spy_schedules_data)
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.data.must_equal(@spy_schedules_data)
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.data.must_equal(@spy_schedules_data + @spy_schedules_data2)
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.connection.must_equal 'da.example.com:237/42'
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.namespace.must_equal 'resque'
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.uptime.must_equal '7'
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.connections.must_equal '8'
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.memory.must_equal '5.16M'
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.memory_peak.must_equal '5.14M'
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.busy.must_equal 162165179294
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.enqueued.must_equal 16776977673
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.retries.must_equal 924984826746
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.scheduled.must_equal 317321542620
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.processed.must_equal 923531545885
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.failed.must_equal 779187529140
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
- 'worker1' => {
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
- 'worker2' => {
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 data list of workers" do
61
- @workers.data.must_equal(@spy_workers_data)
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.data.must_equal(@spy_workers_data)
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.data.must_equal(@spy_workers_data.merge(@spy_workers_data2))
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.0
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: 2013-11-18 00:00:00.000000000 Z
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.1.11
166
+ rubygems_version: 2.2.0
144
167
  signing_key:
145
168
  specification_version: 4
146
169
  summary: Sidekiq monitoring in the console.