提交 29fcbc2e 编写于 作者: J Jeroen van Baarsen

Make que report back its job_id to provider_job_id

Signed-off-by: NJeroen van Baarsen <jeroenvanbaarsen@gmail.com>
上级 52d13182
* Allow `Sidekiq` to report the job id back to `ActiveJob::Base` as
`provider_job_id`
*Jeroen van Baarsen*
* Allow `DelayedJob` to report id back to `ActiveJob::Base` as
`provider_job_id`.
* Allow `DelayedJob`, `Sidekiq` and `que` to report the job id back to
`ActiveJob::Base` as `provider_job_id`.
Fixes #18821.
*Kevin Deisz*
*Kevin Deisz* And *Jeroen van Baarsen*
* `assert_enqueued_jobs` and `assert_performed_jobs` in block form use the
given number as expected value. This makes the error message much easier to
......
......@@ -16,11 +16,15 @@ module QueueAdapters
# Rails.application.config.active_job.queue_adapter = :que
class QueAdapter
def enqueue(job) #:nodoc:
JobWrapper.enqueue job.serialize
que_job = JobWrapper.enqueue job.serialize
job.provider_job_id = que_job.attrs["job_id"]
que_job
end
def enqueue_at(job, timestamp) #:nodoc:
JobWrapper.enqueue job.serialize, run_at: Time.at(timestamp)
que_job = JobWrapper.enqueue job.serialize, run_at: Time.at(timestamp)
job.provider_job_id = que_job.attrs["job_id"]
que_job
end
class JobWrapper < Que::Job #:nodoc:
......
......@@ -56,19 +56,13 @@ class QueuingTest < ActiveSupport::TestCase
end
end
test 'should supply a provider_job_id to DelayedJob' do
skip unless adapter_is?(:delayed_job)
test 'should supply a provider_job_id when available' do
skip unless adapter_is?(:sidekiq) || adapter_is?(:que) || adapter_is?(:delayed_job)
test_job = TestJob.perform_later @id
assert_kind_of Fixnum, test_job.provider_job_id
end
test 'should supply a provider_job_id to Sidekiq' do
skip unless adapter_is?(:sidekiq)
test_job = TestJob.perform_later @id
refute test_job.provider_job_id.nil?, "Provider job id should be set by Sidekiq"
refute test_job.provider_job_id.nil?, "Provider job id should be set by provider"
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 sidekiq"
"Provider job id should by set for delayed jobs by provider"
end
end
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册