Skip to content

Commit

Permalink
Concerted effort to increase test coverage: 86 -> 88%
Browse files Browse the repository at this point in the history
  • Loading branch information
mperham committed Feb 1, 2014
1 parent 9aef296 commit 9867b72
Show file tree
Hide file tree
Showing 7 changed files with 109 additions and 4 deletions.
2 changes: 2 additions & 0 deletions Gemfile
Expand Up @@ -7,3 +7,5 @@ platforms :rbx do
gem 'minitest' # if using minitest
gem 'rubinius-developer_tools' # if using any of coverage, debugger, profiler
end

gem 'sqlite3'
30 changes: 29 additions & 1 deletion lib/sidekiq/actor.rb
@@ -1,7 +1,35 @@
module Sidekiq
module Actor

module ClassMethods
def trap_exit(*args)
end
def new_link(*args)
new(*args)
end
end

module InstanceMethods
def current_actor
self
end
def after(interval)
end
def alive?
!@dead
end
def terminate
@dead = true
end
end

def self.included(klass)
klass.send(:include, Celluloid)
if $TESTING
klass.send(:include, InstanceMethods)
klass.send(:extend, ClassMethods)
else
klass.send(:include, Celluloid)
end
end
end
end
14 changes: 13 additions & 1 deletion lib/sidekiq/fetch.rb
Expand Up @@ -12,6 +12,8 @@ class Fetcher

TIMEOUT = 1

attr_reader :down

def initialize(mgr, options)
@down = nil
@mgr = mgr
Expand Down Expand Up @@ -47,6 +49,12 @@ def fetch
end
end

private

def pause
sleep(TIMEOUT)
end

def handle_fetch_exception(ex)
if !@down
logger.error("Error fetching message: #{ex}")
Expand All @@ -55,7 +63,7 @@ def handle_fetch_exception(ex)
end
end
@down ||= Time.now
sleep(TIMEOUT)
pause
after(0) { fetch }
rescue Task::TerminatedError
# If redis is down when we try to shut down, all the fetch backlog
Expand All @@ -69,6 +77,10 @@ def self.done!
@done = true
end

def self.reset # testing only
@done = nil
end

def self.done?
@done
end
Expand Down
3 changes: 1 addition & 2 deletions sidekiq.gemspec
Expand Up @@ -22,7 +22,6 @@ Gem::Specification.new do |gem|
gem.add_development_dependency 'sinatra'
gem.add_development_dependency 'minitest', '~> 4.2'
gem.add_development_dependency 'rake'
gem.add_development_dependency 'actionmailer', '>= 4.0.0'
gem.add_development_dependency 'activerecord', '>= 4.0.0'
gem.add_development_dependency 'rails', '>= 4.0.0'
gem.add_development_dependency 'coveralls'
end
2 changes: 2 additions & 0 deletions test/helper.rb
Expand Up @@ -2,13 +2,15 @@
require 'coveralls'
Coveralls.wear! do
add_filter "/test/"
add_filter "/myapp/"
end

ENV['RACK_ENV'] = ENV['RAILS_ENV'] = 'test'
if ENV.has_key?("SIMPLECOV")
require 'simplecov'
SimpleCov.start do
add_filter "/test/"
add_filter "/myapp/"
end
end

Expand Down
6 changes: 6 additions & 0 deletions test/test_cli.rb
Expand Up @@ -30,6 +30,12 @@ class TestCli < Sidekiq::Test
assert @cli.valid?
end

it 'boots rails' do
refute defined?(::Rails)
@cli.parse(['sidekiq', '-r', './myapp'])
assert defined?(::Rails)
end

it 'changes concurrency' do
@cli.parse(['sidekiq', '-c', '60', '-r', './test/fake_env.rb'])
assert_equal 60, Sidekiq.options[:concurrency]
Expand Down
56 changes: 56 additions & 0 deletions test/test_fetch.rb
Expand Up @@ -40,5 +40,61 @@ class TestFetcher < Sidekiq::Test
assert_equal 2, q1.size
assert_equal 1, q2.size
end

describe 'fetching' do
before do
Sidekiq::Fetcher.reset
end

it 'instantiates' do
begin
Sidekiq.options[:fetch] = NullFetch
mgr = Minitest::Mock.new
fetch = Sidekiq::Fetcher.new(mgr, {})
fetch.fetch
Sidekiq::Fetcher.done!
ensure
Sidekiq.options[:fetch] = Sidekiq::BasicFetch
end
end

class NullFetch
def initialize(opts)
end
def retrieve_work
end
def self.bulk_requeue(*args)
end
end

it 'handles redis network errors' do
begin
Sidekiq.logger.level = Logger::FATAL
Sidekiq.options[:fetch] = ErrorFetch
mgr = Minitest::Mock.new
fetch = Sidekiq::Fetcher.new(mgr, {})
def fetch.pause
end
refute fetch.down
fetch.fetch
Sidekiq::Fetcher.done!
assert fetch.down
ensure
Sidekiq.options[:fetch] = Sidekiq::BasicFetch
Sidekiq.logger.level = Logger::ERROR
end
end

class ErrorFetch
def initialize(opts)
end
def retrieve_work
raise IOError, "ker-BOOM"
end
def self.bulk_requeue(*args)
end
end
end

end
end

0 comments on commit 9867b72

Please sign in to comment.