1
0
Fork 0
mirror of https://github.com/mperham/sidekiq.git synced 2022-11-09 13:52:34 -05:00
mperham--sidekiq/test/rails.rb
Mike Perham 29dca70e24
Introduce Sidekiq::Capsule (#5487)
* Initial work on Sidekiq::Config

* Initial work on Sidekiq::Config

* reduce dependencies in deploy marks

* bare sidekiq and webapp

* Modify runtime to work with Capsules

* Cleanup

* Rename test files to remove test_ prefix

* Update test suite and standard rules to be more compliant

* Move constant definition outside code, per standard formatting

* Loads of changes for introduction of Capsules

* Remove Redis adapter abstraction

* update capsule overview

* Ensure Sidekiq.redis uses the correct pool for jobs running within a Capsule

* Use default_capsule for safety

* Slow down the beat to halve its Redis overhead

* move config fixtures into cfg/

* Add capsule middleware test

* use accessor
2022-08-25 10:15:11 -07:00

53 lines
1.7 KiB
Ruby

# frozen_string_literal: true
require_relative "helper"
require "active_job"
require "sidekiq/rails"
require "sidekiq/api"
describe "ActiveJob" do
before do
@config = reset!
# need to force this since we aren't booting a Rails app
ActiveJob::Base.queue_adapter = :sidekiq
ActiveJob::Base.logger = nil
ActiveJob::Base.send(:include, ::Sidekiq::Worker::Options) unless ActiveJob::Base.respond_to?(:sidekiq_options)
end
it "does not allow Sidekiq::Job in AJ::Base classes" do
ex = assert_raises ArgumentError do
Class.new(ActiveJob::Base) do
include Sidekiq::Job
end
end
assert_includes ex.message, "Sidekiq::Job cannot be included"
end
it "loads Sidekiq::Job::Options in AJ::Base classes" do
aj = Class.new(ActiveJob::Base) do
queue_as :bar
sidekiq_options retry: 4, queue: "foo", backtrace: 5
sidekiq_retry_in { |count, _exception| count * 10 }
sidekiq_retries_exhausted do |msg, _exception|
@config.logger.warn "Failed #{msg["class"]} with #{msg["args"]}: #{msg["error_message"]}"
end
end
assert_equal 4, aj.get_sidekiq_options["retry"]
# When using ActiveJobs, you cannot set the queue with sidekiq_options, you must use
# queue_as or set(queue: ...). This is to avoid duplicate ways of doing the same thing.
instance = aj.perform_later(1, 2, 3)
q = Sidekiq::Queue.new("foo")
assert_equal 0, q.size
q = Sidekiq::Queue.new("bar")
assert_equal 1, q.size
assert_equal 24, instance.provider_job_id.size
job = q.first
assert_equal 4, job["retry"]
assert_equal 5, job["backtrace"]
# AJ's queue_as should take precedence over Sidekiq's queue option
assert_equal "bar", job["queue"]
end
end