Skip to content

Commit

Permalink
Provide provider_job_id to qu adapter.
Browse files Browse the repository at this point in the history
Further work to provide provider_job_id for queue adapters.
  • Loading branch information
kddnewton committed May 7, 2015
1 parent 6d951bd commit 8bd5ea9
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 8 deletions.
4 changes: 3 additions & 1 deletion activejob/lib/active_job/queue_adapters/qu_adapter.rb
Expand Up @@ -17,9 +17,11 @@ module QueueAdapters
# 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
job.provider_job_id = qu_job.id
qu_job
end

def enqueue_at(job, timestamp, *args) #:nodoc:
Expand Down
13 changes: 8 additions & 5 deletions activejob/test/integration/queuing_test.rb
Expand Up @@ -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
Expand Down Expand Up @@ -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
4 changes: 2 additions & 2 deletions activejob/test/support/integration/test_case_helpers.rb
Expand Up @@ -27,8 +27,8 @@ def clear_jobs
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)
Expand Down

0 comments on commit 8bd5ea9

Please sign in to comment.