1
0
Fork 0
mirror of https://github.com/mperham/sidekiq.git synced 2022-11-09 13:52:34 -05:00
mperham--sidekiq/test/capsule.rb
2022-08-30 11:51:23 -07:00

76 lines
2.1 KiB
Ruby

# frozen_string_literal: true
require_relative "helper"
require "sidekiq/capsule"
describe Sidekiq::Capsule do
before do
@config = reset!
@cap = @config.default_capsule
end
it "provides its own redis pool" do
one = @cap
one.concurrency = 2
two = Sidekiq::Capsule.new("foo", @config)
two.concurrency = 3
# the pool is cached
assert_equal one.redis_pool, one.redis_pool
assert_equal two.redis_pool, two.redis_pool
# they are sized correctly
assert_equal 2, one.redis_pool.size
assert_equal 3, two.redis_pool.size
refute_equal one.redis_pool, two.redis_pool
# they point to the same Redis
assert one.redis { |c| c.set("hello", "world") }
assert_equal "world", two.redis { |c| c.get("hello") }
end
it "parses queues correctly" do
cap = @cap
assert_equal ["default"], cap.queues
cap.queues = %w[foo bar,2]
assert_equal %w[foo bar bar], cap.queues
cap.queues = ["default"]
assert_equal %w[default], cap.queues
# config/sidekiq.yml input will look like this
cap.queues = [["foo"], ["baz", 3]]
assert_equal %w[foo baz baz baz], cap.queues
end
it "can have customized middleware chains" do
one = Object.new
two = Object.new
@config.client_middleware.add one
@config.server_middleware.add one
assert_includes @config.client_middleware, one
assert_includes @config.server_middleware, one
@config.capsule("testy") do |cap|
cap.concurrency = 2
cap.queues = %w[foo bar,2]
cap.server_middleware do |chain|
chain.add two
end
cap.client_middleware do |chain|
chain.add two
end
end
assert_equal 2, @config.capsules.size
cap = @config.capsules[1]
assert_equal "testy", cap.name
assert_equal 2, cap.concurrency
assert_includes cap.server_middleware, one
assert_includes cap.client_middleware, one
assert_includes cap.server_middleware, two
assert_includes cap.client_middleware, two
refute_includes @config.server_middleware, two
refute_includes @config.client_middleware, two
end
end