Skip to content

Commit

Permalink
Merge pull request sidekiq#2568 from mperham/sweetsuite
Browse files Browse the repository at this point in the history
Test suite overhaul
  • Loading branch information
mperham committed Sep 23, 2015
2 parents 9c27882 + 53e6b9e commit c4b4bb1
Show file tree
Hide file tree
Showing 19 changed files with 341 additions and 655 deletions.
89 changes: 39 additions & 50 deletions test/test_api.rb
Expand Up @@ -3,23 +3,16 @@
class TestApi < Sidekiq::Test

describe "stats" do
before do
@before = DateTime::DATE_FORMATS[:default]
DateTime::DATE_FORMATS[:default] = "%d/%m/%Y %H:%M:%S"
Sidekiq.redis = REDIS
Sidekiq.redis {|c| c.flushdb }
end

after do
DateTime::DATE_FORMATS[:default] = @before
it "is initially zero" do
Sidekiq.redis {|c| c.flushdb }
s = Sidekiq::Stats.new
assert_equal 0, s.processed
assert_equal 0, s.failed
assert_equal 0, s.enqueued
end

describe "processed" do
it "is initially zero" do
s = Sidekiq::Stats.new
assert_equal 0, s.processed
end

it "returns number of processed jobs" do
Sidekiq.redis { |conn| conn.set("stat:processed", 5) }
s = Sidekiq::Stats.new
Expand All @@ -28,11 +21,6 @@ class TestApi < Sidekiq::Test
end

describe "failed" do
it "is initially zero" do
s = Sidekiq::Stats.new
assert_equal 0, s.failed
end

it "returns number of failed jobs" do
Sidekiq.redis { |conn| conn.set("stat:failed", 5) }
s = Sidekiq::Stats.new
Expand All @@ -50,40 +38,36 @@ class TestApi < Sidekiq::Test

it 'will reset all stats by default' do
Sidekiq::Stats.new.reset
Sidekiq.redis do |conn|
assert_equal '0', conn.get('stat:processed')
assert_equal '0', conn.get('stat:failed')
end
s = Sidekiq::Stats.new
assert_equal 0, s.failed
assert_equal 0, s.processed
end

it 'can reset individual stats' do
Sidekiq::Stats.new.reset('failed')
Sidekiq.redis do |conn|
assert_equal '5', conn.get('stat:processed')
assert_equal '0', conn.get('stat:failed')
end
s = Sidekiq::Stats.new
assert_equal 0, s.failed
assert_equal 5, s.processed
end

it 'can accept anything that responds to #to_s' do
Sidekiq::Stats.new.reset(:failed)
Sidekiq.redis do |conn|
assert_equal '5', conn.get('stat:processed')
assert_equal '0', conn.get('stat:failed')
end
s = Sidekiq::Stats.new
assert_equal 0, s.failed
assert_equal 5, s.processed
end

it 'ignores anything other than "failed" or "processed"' do
Sidekiq::Stats.new.reset((1..10).to_a, ['failed'])
Sidekiq.redis do |conn|
assert_equal '5', conn.get('stat:processed')
assert_equal '0', conn.get('stat:failed')
end
s = Sidekiq::Stats.new
assert_equal 0, s.failed
assert_equal 5, s.processed
end
end

describe "queues" do
it "returns all queues" do
assert_equal Sidekiq::Stats.new.queues, Sidekiq::Stats::Queues.new.lengths
before do
Sidekiq.redis {|c| c.flushdb }
end

it "is initially empty" do
Expand All @@ -103,17 +87,15 @@ class TestApi < Sidekiq::Test
s = Sidekiq::Stats::Queues.new
assert_equal ({ "foo" => 1, "bar" => 3 }), s.lengths
assert_equal "bar", s.lengths.first.first

assert_equal Sidekiq::Stats.new.queues, Sidekiq::Stats::Queues.new.lengths
end
end

describe "enqueued" do
it "is initially empty" do
s = Sidekiq::Stats.new
assert_equal 0, s.enqueued
end

it "returns total enqueued jobs" do
Sidekiq.redis do |conn|
conn.flushdb
conn.rpush 'queue:foo', '{}'
conn.sadd 'queues', 'foo'

Expand All @@ -127,6 +109,15 @@ class TestApi < Sidekiq::Test
end

describe "over time" do
before do
@before = DateTime::DATE_FORMATS[:default]
DateTime::DATE_FORMATS[:default] = "%d/%m/%Y %H:%M:%S"
end

after do
DateTime::DATE_FORMATS[:default] = @before
end

describe "processed" do
it 'retrieves hash of dates' do
Sidekiq.redis do |c|
Expand All @@ -137,13 +128,13 @@ class TestApi < Sidekiq::Test
end
Time.stub(:now, Time.parse("2012-12-26 1:00:00 -0500")) do
s = Sidekiq::Stats::History.new(2)
assert_equal ({ "2012-12-26" => 6, "2012-12-25" => 1 }), s.processed
assert_equal({ "2012-12-26" => 6, "2012-12-25" => 1 }, s.processed)

s = Sidekiq::Stats::History.new(3)
assert_equal ({ "2012-12-26" => 6, "2012-12-25" => 1, "2012-12-24" => 4 }), s.processed
assert_equal({ "2012-12-26" => 6, "2012-12-25" => 1, "2012-12-24" => 4 }, s.processed)

s = Sidekiq::Stats::History.new(2, Date.parse("2012-12-25"))
assert_equal ({ "2012-12-25" => 1, "2012-12-24" => 4 }), s.processed
assert_equal({ "2012-12-25" => 1, "2012-12-24" => 4 }, s.processed)
end
end
end
Expand Down Expand Up @@ -172,10 +163,7 @@ class TestApi < Sidekiq::Test
end

describe 'with an empty database' do
include Sidekiq::Util

before do
Sidekiq.redis = REDIS
Sidekiq.redis {|c| c.flushdb }
end

Expand Down Expand Up @@ -389,7 +377,7 @@ class ApiWorker
identity_string = "identity_string"
odata = {
'pid' => 123,
'hostname' => hostname,
'hostname' => Socket.gethostname,
'key' => identity_string,
'identity' => identity_string,
'started_at' => Time.now.to_f - 15,
Expand Down Expand Up @@ -424,8 +412,9 @@ class ApiWorker
assert false
end

key = "#{hostname}:#{$$}"
pdata = { 'pid' => $$, 'hostname' => hostname, 'started_at' => Time.now.to_i }
hn = Socket.gethostname
key = "#{hn}:#{$$}"
pdata = { 'pid' => $$, 'hostname' => hn, 'started_at' => Time.now.to_i }
Sidekiq.redis do |conn|
conn.sadd('processes', key)
conn.hmset(key, 'info', Sidekiq.dump_json(pdata), 'busy', 0, 'beat', Time.now.to_f)
Expand Down
60 changes: 3 additions & 57 deletions test/test_cli.rb
Expand Up @@ -168,35 +168,14 @@ class TestCli < Sidekiq::Test
@cli.parse(['sidekiq', '-C', './test/config.yml'])
end

it 'takes a path' do
it 'parses as expected' do
assert_equal './test/config.yml', Sidekiq.options[:config_file]
end

it 'sets verbose' do
refute Sidekiq.options[:verbose]
end

it 'sets require file' do
assert_equal './test/fake_env.rb', Sidekiq.options[:require]
end

it 'does not set environment' do
assert_equal nil, Sidekiq.options[:environment]
end

it 'sets concurrency' do
assert_equal 50, Sidekiq.options[:concurrency]
end

it 'sets pid file' do
assert_equal '/tmp/sidekiq-config-test.pid', Sidekiq.options[:pidfile]
end

it 'sets logfile' do
assert_equal '/tmp/sidekiq.log', Sidekiq.options[:logfile]
end

it 'sets queues' do
assert_equal 2, Sidekiq.options[:queues].count { |q| q == 'very_often' }
assert_equal 1, Sidekiq.options[:queues].count { |q| q == 'seldom' }
end
Expand All @@ -207,35 +186,14 @@ class TestCli < Sidekiq::Test
@cli.parse(['sidekiq', '-e', 'staging', '-C', './test/env_based_config.yml'])
end

it 'takes a path' do
it 'parses as expected' do
assert_equal './test/env_based_config.yml', Sidekiq.options[:config_file]
end

it 'sets verbose' do
refute Sidekiq.options[:verbose]
end

it 'sets require file' do
assert_equal './test/fake_env.rb', Sidekiq.options[:require]
end

it 'sets environment' do
assert_equal 'staging', Sidekiq.options[:environment]
end

it 'sets concurrency' do
assert_equal 5, Sidekiq.options[:concurrency]
end

it 'sets pid file' do
assert_equal '/tmp/sidekiq-config-test.pid', Sidekiq.options[:pidfile]
end

it 'sets logfile' do
assert_equal '/tmp/sidekiq.log', Sidekiq.options[:logfile]
end

it 'sets queues' do
assert_equal 2, Sidekiq.options[:queues].count { |q| q == 'very_often' }
assert_equal 1, Sidekiq.options[:queues].count { |q| q == 'seldom' }
end
Expand Down Expand Up @@ -297,23 +255,11 @@ class TestCli < Sidekiq::Test
File.unlink @tmp_path if File.exist? @tmp_path
end

it 'uses concurrency flag' do
it 'gives the expected options' do
assert_equal 100, Sidekiq.options[:concurrency]
end

it 'uses require file flag' do
assert_equal @tmp_lib_path, Sidekiq.options[:require]
end

it 'uses environment flag' do
assert_equal 'snoop', Sidekiq.options[:environment]
end

it 'uses pidfile flag' do
assert_equal @tmp_path, Sidekiq.options[:pidfile]
end

it 'sets queues' do
assert_equal 7, Sidekiq.options[:queues].count { |q| q == 'often' }
assert_equal 3, Sidekiq.options[:queues].count { |q| q == 'seldom' }
end
Expand Down

0 comments on commit c4b4bb1

Please sign in to comment.