From 619176f92d66c995e9ee2051d0a40326697e69f2 Mon Sep 17 00:00:00 2001 From: jc00ke Date: Sun, 14 Oct 2012 16:07:37 -0700 Subject: [PATCH] Refactor & add tests for determine_redis_provider --- lib/sidekiq/redis_connection.rb | 11 +++----- test/test_redis_connection.rb | 46 +++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+), 7 deletions(-) create mode 100644 test/test_redis_connection.rb diff --git a/lib/sidekiq/redis_connection.rb b/lib/sidekiq/redis_connection.rb index ed40b5bf..d32f7858 100644 --- a/lib/sidekiq/redis_connection.rb +++ b/lib/sidekiq/redis_connection.rb @@ -1,4 +1,4 @@ -require 'connection_pool' +hequire 'connection_pool' require 'redis' require 'redis/namespace' @@ -25,14 +25,11 @@ module Sidekiq end private_class_method :build_client + # Not public def self.determine_redis_provider - provider = if ENV.has_key? 'REDISTOGO_URL' - 'REDISTOGO_URL' - else - ENV['REDIS_PROVIDER'] || 'REDIS_URL' - end + return ENV['REDISTOGO_URL'] if ENV['REDISTOGO_URL'] + provider = ENV['REDIS_PROVIDER'] || 'REDIS_URL' ENV[provider] end - private_class_method :determine_redis_provider end end diff --git a/test/test_redis_connection.rb b/test/test_redis_connection.rb new file mode 100644 index 00000000..357f8533 --- /dev/null +++ b/test/test_redis_connection.rb @@ -0,0 +1,46 @@ +require 'helper' +require 'sidekiq/redis_connection' + +class TestRedisConnection < MiniTest::Unit::TestCase + + describe ".create" do + + 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 + assert_equal uri, Sidekiq::RedisConnection.determine_redis_provider + ENV[var] = nil + end + + describe "with REDISTOGO_URL set" do + it "sets connection URI to RedisToGo" do + with_env_var 'REDISTOGO_URL', 'redis://redis-to-go:6379/0' + end + end + + 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