2015-12-31 18:33:35 -05:00
|
|
|
# frozen_string_literal: true
|
2014-12-30 15:54:58 -05:00
|
|
|
require_relative 'helper'
|
2012-10-14 19:07:37 -04:00
|
|
|
|
2013-09-22 17:38:33 -04:00
|
|
|
class TestRedisConnection < Sidekiq::Test
|
2012-10-14 19:07:37 -04:00
|
|
|
|
|
|
|
describe ".create" do
|
|
|
|
|
2013-01-19 19:03:12 -05:00
|
|
|
it "creates a pooled redis connection" do
|
|
|
|
pool = Sidekiq::RedisConnection.create
|
|
|
|
assert_equal Redis, pool.checkout.class
|
|
|
|
end
|
|
|
|
|
2013-07-17 11:02:51 -04:00
|
|
|
describe "network_timeout" do
|
|
|
|
it "sets a custom network_timeout if specified" do
|
|
|
|
pool = Sidekiq::RedisConnection.create(:network_timeout => 8)
|
|
|
|
redis = pool.checkout
|
2013-09-22 17:38:33 -04:00
|
|
|
|
2013-07-17 11:02:51 -04:00
|
|
|
assert_equal 8, redis.client.timeout
|
|
|
|
end
|
|
|
|
|
|
|
|
it "uses the default network_timeout if none specified" do
|
|
|
|
pool = Sidekiq::RedisConnection.create
|
|
|
|
redis = pool.checkout
|
|
|
|
|
|
|
|
assert_equal 5, redis.client.timeout
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2013-01-19 19:03:12 -05:00
|
|
|
describe "namespace" do
|
2016-05-26 01:50:37 -04:00
|
|
|
it "uses a given :namespace set by a symbol key" do
|
2013-01-19 19:03:12 -05:00
|
|
|
pool = Sidekiq::RedisConnection.create(:namespace => "xxx")
|
|
|
|
assert_equal "xxx", pool.checkout.namespace
|
|
|
|
end
|
|
|
|
|
2016-05-26 01:50:37 -04:00
|
|
|
it "uses a given :namespace set by a string key" do
|
|
|
|
pool = Sidekiq::RedisConnection.create("namespace" => "xxx")
|
|
|
|
assert_equal "xxx", pool.checkout.namespace
|
|
|
|
end
|
|
|
|
|
2013-01-19 19:03:12 -05:00
|
|
|
it "uses given :namespace over :namespace from Sidekiq.options" do
|
2013-01-26 11:07:13 -05:00
|
|
|
Sidekiq.options[:namespace] = "xxx"
|
2013-01-19 19:03:12 -05:00
|
|
|
pool = Sidekiq::RedisConnection.create(:namespace => "yyy")
|
|
|
|
assert_equal "yyy", pool.checkout.namespace
|
|
|
|
end
|
|
|
|
end
|
2013-07-16 17:40:50 -04:00
|
|
|
|
2013-10-21 15:53:34 -04:00
|
|
|
describe "socket path" do
|
|
|
|
it "uses a given :path" do
|
|
|
|
pool = Sidekiq::RedisConnection.create(:path => "/var/run/redis.sock")
|
|
|
|
assert_equal "unix", pool.checkout.client.scheme
|
|
|
|
assert_equal "redis:///var/run/redis.sock/0", pool.checkout.client.id
|
|
|
|
end
|
|
|
|
|
|
|
|
it "uses a given :path and :db" do
|
|
|
|
pool = Sidekiq::RedisConnection.create(:path => "/var/run/redis.sock", :db => 8)
|
|
|
|
assert_equal "unix", pool.checkout.client.scheme
|
|
|
|
assert_equal "redis:///var/run/redis.sock/8", pool.checkout.client.id
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2013-07-17 11:02:51 -04:00
|
|
|
describe "pool_timeout" do
|
2013-07-16 17:40:50 -04:00
|
|
|
it "uses a given :timeout over the default of 1" do
|
2013-07-17 11:02:51 -04:00
|
|
|
pool = Sidekiq::RedisConnection.create(:pool_timeout => 5)
|
2013-09-22 17:38:33 -04:00
|
|
|
|
2013-07-16 17:40:50 -04:00
|
|
|
assert_equal 5, pool.instance_eval{ @timeout }
|
|
|
|
end
|
|
|
|
|
|
|
|
it "uses the default timeout of 1 if no override" do
|
|
|
|
pool = Sidekiq::RedisConnection.create
|
|
|
|
|
|
|
|
assert_equal 1, pool.instance_eval{ @timeout }
|
|
|
|
end
|
|
|
|
end
|
2013-01-19 19:03:12 -05:00
|
|
|
end
|
|
|
|
|
|
|
|
describe ".determine_redis_provider" do
|
|
|
|
|
2014-06-07 23:43:22 -04:00
|
|
|
before do
|
2014-06-07 23:53:47 -04:00
|
|
|
@old_env = ENV.to_hash
|
2014-06-07 23:43:22 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
after do
|
|
|
|
ENV.update(@old_env)
|
|
|
|
end
|
|
|
|
|
2012-10-14 19:07:37 -04:00
|
|
|
def with_env_var(var, uri, skip_provider=false)
|
|
|
|
vars = ['REDISTOGO_URL', 'REDIS_PROVIDER', 'REDIS_URL'] - [var]
|
|
|
|
vars.each do |v|
|
|
|
|
next if skip_provider
|
|
|
|
ENV[v] = nil
|
|
|
|
end
|
|
|
|
ENV[var] = uri
|
2014-02-14 09:43:34 -05:00
|
|
|
assert_equal uri, Sidekiq::RedisConnection.__send__(:determine_redis_provider)
|
2012-10-14 19:07:37 -04:00
|
|
|
ENV[var] = nil
|
|
|
|
end
|
|
|
|
|
2013-11-24 09:16:37 -05:00
|
|
|
describe "with REDISTOGO_URL and a parallel REDIS_PROVIDER set" do
|
|
|
|
it "sets connection URI to the provider" do
|
|
|
|
uri = 'redis://sidekiq-redis-provider:6379/0'
|
|
|
|
provider = 'SIDEKIQ_REDIS_PROVIDER'
|
|
|
|
|
|
|
|
ENV['REDIS_PROVIDER'] = provider
|
|
|
|
ENV[provider] = uri
|
|
|
|
ENV['REDISTOGO_URL'] = 'redis://redis-to-go:6379/0'
|
|
|
|
with_env_var provider, uri, true
|
|
|
|
|
|
|
|
ENV[provider] = nil
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2012-10-14 19:07:37 -04:00
|
|
|
describe "with REDIS_PROVIDER set" do
|
|
|
|
it "sets connection URI to the provider" do
|
|
|
|
uri = 'redis://sidekiq-redis-provider:6379/0'
|
|
|
|
provider = 'SIDEKIQ_REDIS_PROVIDER'
|
|
|
|
|
|
|
|
ENV['REDIS_PROVIDER'] = provider
|
|
|
|
ENV[provider] = uri
|
|
|
|
|
|
|
|
with_env_var provider, uri, true
|
|
|
|
|
|
|
|
ENV[provider] = nil
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
describe "with REDIS_URL set" do
|
|
|
|
it "sets connection URI to custom uri" do
|
|
|
|
with_env_var 'REDIS_URL', 'redis://redis-uri:6379/0'
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
end
|
|
|
|
end
|