mirror of
https://github.com/mperham/sidekiq.git
synced 2022-11-09 13:52:34 -05:00
Allow Sidekiq::Worker#set to be chained
This commit is contained in:
parent
e1b392d3be
commit
33aedf62de
4 changed files with 71 additions and 52 deletions
|
@ -6,7 +6,8 @@ HEAD
|
|||
---------
|
||||
|
||||
- Better handling of malformed job arguments in payload [#4095]
|
||||
- add back in bootstap's dropdown css component [#4099, urkle]
|
||||
- Restore bootstap's dropdown css component [#4099, urkle]
|
||||
- Allow `Sidekiq::Worker#set` to be chained
|
||||
|
||||
5.2.5
|
||||
---------
|
||||
|
|
|
@ -46,6 +46,11 @@ module Sidekiq
|
|||
@opts = opts
|
||||
end
|
||||
|
||||
def set(options)
|
||||
@opts.merge!(options)
|
||||
self
|
||||
end
|
||||
|
||||
def perform_async(*args)
|
||||
@klass.client_push(@opts.merge('args' => args, 'class' => @klass))
|
||||
end
|
||||
|
|
|
@ -238,57 +238,6 @@ describe Sidekiq::Client do
|
|||
end
|
||||
end
|
||||
|
||||
describe 'Sidekiq::Worker#set' do
|
||||
class SetWorker
|
||||
include Sidekiq::Worker
|
||||
sidekiq_options :queue => :foo, 'retry' => 12
|
||||
end
|
||||
|
||||
def setup
|
||||
Sidekiq.redis {|c| c.flushdb }
|
||||
end
|
||||
|
||||
it 'can be memoized' do
|
||||
q = Sidekiq::Queue.new('bar')
|
||||
assert_equal 0, q.size
|
||||
set = SetWorker.set(queue: :bar, foo: 'qaaz')
|
||||
set.perform_async(1)
|
||||
set.perform_async(1)
|
||||
set.perform_async(1)
|
||||
set.perform_async(1)
|
||||
assert_equal 4, q.size
|
||||
assert_equal 4, q.map{|j| j['jid'] }.uniq.size
|
||||
set.perform_in(10, 1)
|
||||
end
|
||||
|
||||
it 'allows option overrides' do
|
||||
q = Sidekiq::Queue.new('bar')
|
||||
assert_equal 0, q.size
|
||||
assert SetWorker.set(queue: :bar).perform_async(1)
|
||||
job = q.first
|
||||
assert_equal 'bar', job['queue']
|
||||
assert_equal 12, job['retry']
|
||||
end
|
||||
|
||||
it 'handles symbols and strings' do
|
||||
q = Sidekiq::Queue.new('bar')
|
||||
assert_equal 0, q.size
|
||||
assert SetWorker.set('queue' => 'bar', :retry => 11).perform_async(1)
|
||||
job = q.first
|
||||
assert_equal 'bar', job['queue']
|
||||
assert_equal 11, job['retry']
|
||||
|
||||
q.clear
|
||||
assert SetWorker.perform_async(1)
|
||||
assert_equal 0, q.size
|
||||
|
||||
q = Sidekiq::Queue.new('foo')
|
||||
job = q.first
|
||||
assert_equal 'foo', job['queue']
|
||||
assert_equal 12, job['retry']
|
||||
end
|
||||
end
|
||||
|
||||
describe 'class attribute race conditions' do
|
||||
new_class = -> {
|
||||
Class.new do
|
||||
|
|
64
test/test_worker.rb
Normal file
64
test/test_worker.rb
Normal file
|
@ -0,0 +1,64 @@
|
|||
require_relative 'helper'
|
||||
|
||||
describe Sidekiq::Worker do
|
||||
describe '#set' do
|
||||
|
||||
class SetWorker
|
||||
include Sidekiq::Worker
|
||||
sidekiq_options :queue => :foo, 'retry' => 12
|
||||
end
|
||||
|
||||
def setup
|
||||
Sidekiq.redis {|c| c.flushdb }
|
||||
end
|
||||
|
||||
it 'can be memoized' do
|
||||
q = Sidekiq::Queue.new('bar')
|
||||
assert_equal 0, q.size
|
||||
set = SetWorker.set(queue: :bar, foo: 'qaaz')
|
||||
set.perform_async(1)
|
||||
set.perform_async(1)
|
||||
set.perform_async(1)
|
||||
set.perform_async(1)
|
||||
assert_equal 4, q.size
|
||||
assert_equal 4, q.map{|j| j['jid'] }.uniq.size
|
||||
set.perform_in(10, 1)
|
||||
end
|
||||
|
||||
it 'allows option overrides' do
|
||||
q = Sidekiq::Queue.new('bar')
|
||||
assert_equal 0, q.size
|
||||
assert SetWorker.set(queue: :bar).perform_async(1)
|
||||
job = q.first
|
||||
assert_equal 'bar', job['queue']
|
||||
assert_equal 12, job['retry']
|
||||
end
|
||||
|
||||
it 'handles symbols and strings' do
|
||||
q = Sidekiq::Queue.new('bar')
|
||||
assert_equal 0, q.size
|
||||
assert SetWorker.set('queue' => 'bar', :retry => 11).perform_async(1)
|
||||
job = q.first
|
||||
assert_equal 'bar', job['queue']
|
||||
assert_equal 11, job['retry']
|
||||
|
||||
q.clear
|
||||
assert SetWorker.perform_async(1)
|
||||
assert_equal 0, q.size
|
||||
|
||||
q = Sidekiq::Queue.new('foo')
|
||||
job = q.first
|
||||
assert_equal 'foo', job['queue']
|
||||
assert_equal 12, job['retry']
|
||||
end
|
||||
|
||||
it 'allows multiple calls' do
|
||||
SetWorker.set(queue: :foo).set(bar: 'xyz').perform_async
|
||||
|
||||
q = Sidekiq::Queue.new('foo')
|
||||
job = q.first
|
||||
assert_equal 'foo', job['queue']
|
||||
assert_equal 'xyz', job['bar']
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Add table
Reference in a new issue