Provide provider_job_id to qu adapter.
Further work to provide provider_job_id for queue adapters.
This commit is contained in:
parent
6d951bda36
commit
221a411fd7
|
@ -1,4 +1,4 @@
|
|||
* Allow `DelayedJob`, `Sidekiq` and `que` to report the job id back to
|
||||
* Allow `DelayedJob`, `Sidekiq`, `qu`, and `que` to report the job id back to
|
||||
`ActiveJob::Base` as `provider_job_id`.
|
||||
|
||||
Fixes #18821.
|
||||
|
|
|
@ -17,9 +17,13 @@ module ActiveJob
|
|||
# Rails.application.config.active_job.queue_adapter = :qu
|
||||
class QuAdapter
|
||||
def enqueue(job, *args) #:nodoc:
|
||||
Qu::Payload.new(klass: JobWrapper, args: [job.serialize]).tap do |payload|
|
||||
qu_job = Qu::Payload.new(klass: JobWrapper, args: [job.serialize]).tap do |payload|
|
||||
payload.instance_variable_set(:@queue, job.queue_name)
|
||||
end.push
|
||||
|
||||
# qu_job can be nil depending on the configured backend
|
||||
job.provider_job_id = qu_job.id unless qu_job.nil?
|
||||
qu_job
|
||||
end
|
||||
|
||||
def enqueue_at(job, timestamp, *args) #:nodoc:
|
||||
|
|
|
@ -11,7 +11,7 @@ class QueuingTest < ActiveSupport::TestCase
|
|||
end
|
||||
|
||||
test 'should not run jobs queued on a non-listening queue' do
|
||||
skip if adapter_is?(:inline) || adapter_is?(:sucker_punch) || adapter_is?(:que)
|
||||
skip if adapter_is?(:inline, :sucker_punch, :que)
|
||||
old_queue = TestJob.queue_name
|
||||
|
||||
begin
|
||||
|
@ -56,13 +56,16 @@ class QueuingTest < ActiveSupport::TestCase
|
|||
end
|
||||
end
|
||||
|
||||
test 'should supply a provider_job_id when available' do
|
||||
skip unless adapter_is?(:sidekiq) || adapter_is?(:que) || adapter_is?(:delayed_job)
|
||||
test 'should supply a provider_job_id when available for immediate jobs' do
|
||||
skip unless adapter_is?(:delayed_job, :sidekiq, :qu, :que)
|
||||
test_job = TestJob.perform_later @id
|
||||
refute test_job.provider_job_id.nil?, "Provider job id should be set by provider"
|
||||
refute test_job.provider_job_id.nil?, 'Provider job id should be set by provider'
|
||||
end
|
||||
|
||||
test 'should supply a provider_job_id when available for delayed jobs' do
|
||||
skip unless adapter_is?(:delayed_job, :sidekiq, :que)
|
||||
delayed_test_job = TestJob.set(wait: 1.minute).perform_later @id
|
||||
refute delayed_test_job.provider_job_id.nil?,
|
||||
"Provider job id should by set for delayed jobs by provider"
|
||||
'Provider job id should by set for delayed jobs by provider'
|
||||
end
|
||||
end
|
||||
|
|
|
@ -27,8 +27,8 @@ module TestCaseHelpers
|
|||
jobs_manager.clear_jobs
|
||||
end
|
||||
|
||||
def adapter_is?(adapter_class_symbol)
|
||||
ActiveJob::Base.queue_adapter.class.name.split("::").last.gsub(/Adapter$/, '').underscore == adapter_class_symbol.to_s
|
||||
def adapter_is?(*adapter_class_symbols)
|
||||
adapter_class_symbols.map(&:to_s).include?(ActiveJob::Base.queue_adapter.class.name.split("::").last.gsub(/Adapter$/, '').underscore)
|
||||
end
|
||||
|
||||
def wait_for_jobs_to_finish_for(seconds=60)
|
||||
|
|
Loading…
Reference in New Issue