mirror of
https://github.com/mperham/sidekiq.git
synced 2022-11-09 13:52:34 -05:00
69 lines
1.7 KiB
Ruby
69 lines
1.7 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require_relative "helper"
|
|
require "sidekiq/fetch"
|
|
require "sidekiq/capsule"
|
|
require "sidekiq/api"
|
|
|
|
describe Sidekiq::BasicFetch do
|
|
before do
|
|
@config = reset!
|
|
@cap = @config.default_capsule
|
|
@config.redis do |conn|
|
|
conn.rpush("queue:basic", "msg")
|
|
end
|
|
end
|
|
|
|
it "retrieves" do
|
|
@cap.queues = ["basic", "bar,3"]
|
|
fetch = Sidekiq::BasicFetch.new(@cap)
|
|
|
|
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 ordering" do
|
|
@cap.queues = ["basic", "bar"]
|
|
fetch = Sidekiq::BasicFetch.new(@cap)
|
|
cmd = fetch.queues_cmd
|
|
assert_equal cmd, ["queue:basic", "queue:bar"]
|
|
end
|
|
|
|
it "bulk requeues" do
|
|
@config.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
|
|
|
|
@cap.queues = ["foo", "bar"]
|
|
fetch = Sidekiq::BasicFetch.new(@cap)
|
|
works = 3.times.map { fetch.retrieve_work }
|
|
assert_equal 0, q1.size
|
|
assert_equal 0, q2.size
|
|
|
|
fetch.bulk_requeue(works, nil)
|
|
assert_equal 2, q1.size
|
|
assert_equal 1, q2.size
|
|
end
|
|
|
|
it "sleeps when no queues are active" do
|
|
@cap.queues = []
|
|
fetch = Sidekiq::BasicFetch.new(@cap)
|
|
mock = Minitest::Mock.new
|
|
mock.expect(:call, nil, [Sidekiq::BasicFetch::TIMEOUT])
|
|
fetch.stub(:sleep, mock) { assert_nil fetch.retrieve_work }
|
|
mock.verify
|
|
end
|
|
end
|