mirror of
https://github.com/mperham/sidekiq.git
synced 2022-11-09 13:52:34 -05:00
67daa7a408
* Prepare for upcoming Sidekiq::Config redesign Adjust the server internals to use a config object rather than refering directly to the Sidekiq module.
69 lines
1.7 KiB
Ruby
69 lines
1.7 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require_relative "helper"
|
|
require "sidekiq/fetch"
|
|
require "sidekiq/api"
|
|
|
|
describe Sidekiq::BasicFetch do
|
|
before do
|
|
Sidekiq.redis do |conn|
|
|
conn.flushdb
|
|
conn.rpush("queue:basic", "msg")
|
|
end
|
|
Sidekiq.reset!
|
|
@config = Sidekiq
|
|
end
|
|
|
|
def fetcher(options)
|
|
@config.merge!(options)
|
|
Sidekiq::BasicFetch.new(@config)
|
|
end
|
|
|
|
it "retrieves" do
|
|
fetch = fetcher(queues: ["basic", "bar"])
|
|
uow = fetch.retrieve_work
|
|
refute_nil uow
|
|
assert_equal "basic", uow.queue_name
|
|
assert_equal "msg", uow.job
|
|
q = Sidekiq::Queue.new("basic")
|
|
assert_equal 0, q.size
|
|
uow.requeue
|
|
assert_equal 1, q.size
|
|
assert_nil uow.acknowledge
|
|
end
|
|
|
|
it "retrieves with strict setting" do
|
|
fetch = fetcher(queues: ["basic", "bar", "bar"], strict: true)
|
|
cmd = fetch.queues_cmd
|
|
assert_equal cmd, ["queue:basic", "queue:bar", Sidekiq::BasicFetch::TIMEOUT]
|
|
end
|
|
|
|
it "bulk requeues" do
|
|
Sidekiq.redis do |conn|
|
|
conn.rpush("queue:foo", ["bob", "bar"])
|
|
conn.rpush("queue:bar", "widget")
|
|
end
|
|
|
|
q1 = Sidekiq::Queue.new("foo")
|
|
q2 = Sidekiq::Queue.new("bar")
|
|
assert_equal 2, q1.size
|
|
assert_equal 1, q2.size
|
|
|
|
fetch = fetcher(queues: ["foo", "bar"])
|
|
works = 3.times.map { fetch.retrieve_work }
|
|
assert_equal 0, q1.size
|
|
assert_equal 0, q2.size
|
|
|
|
fetch.bulk_requeue(works, {queues: []})
|
|
assert_equal 2, q1.size
|
|
assert_equal 1, q2.size
|
|
end
|
|
|
|
it "sleeps when no queues are active" do
|
|
fetch = fetcher(queues: [])
|
|
mock = Minitest::Mock.new
|
|
mock.expect(:call, nil, [Sidekiq::BasicFetch::TIMEOUT])
|
|
fetch.stub(:sleep, mock) { assert_nil fetch.retrieve_work }
|
|
mock.verify
|
|
end
|
|
end
|