Skip to content
Snippets Groups Projects
Commit 3043b31c authored by Robert Speicher's avatar Robert Speicher
Browse files

Merge branch 'feature/redis-sentinel' into 'master'

Sentinel Support

Sentinel connection parameters in `config.yml` file.

Fixes #29

See merge request !85
parents 4f8e91fa ee684a09
No related branches found
No related tags found
1 merge request!85Sentinel Support
Pipeline #
v3.4.0
- Redis Sentinel support
v3.3.3
- Print URL for new or existing merge request after push
 
Loading
Loading
3.3.3
3.4.0
Loading
Loading
@@ -38,8 +38,16 @@ redis:
# port: 6379
# pass: redispass # Allows you to specify the password for Redis
database: 0
socket: /var/run/redis/redis.sock # Comment out this line if you want to use TCP
socket: /var/run/redis/redis.sock # Comment out this line if you want to use TCP or Sentinel
namespace: resque:gitlab
# sentinels:
# -
# host: 127.0.0.1
# port: 26380
# -
# host: 127.0.0.1
# port: 26381
 
# Log file.
# Default is gitlab-shell.log in the root directory.
Loading
Loading
Loading
Loading
@@ -81,6 +81,12 @@ class GitlabNet
db: database
}
 
if redis_config.has_key?('sentinels')
params[:sentinels] = redis_config['sentinels']
.select { |s| s['host'] && s['port'] }
.map { |s| { host: s['host'], port: s['port'] } }
end
if redis_config.has_key?("socket")
params = { path: redis_config['socket'], db: database }
elsif redis_config.has_key?("pass")
Loading
Loading
redis:
bin: /usr/bin/redis-cli
host: 127.0.1.1
port: 6378
pass: secure
database: 1
socket: /var/run/redis/redis.sock
namespace: my:gitlab
sentinels:
-
host: 127.0.0.1
port: 26380
Loading
Loading
@@ -6,17 +6,8 @@ describe GitlabConfig do
 
describe :redis do
before do
config.instance_variable_set(:@config, YAML.load(<<eos
redis:
bin: /usr/bin/redis-cli
host: 127.0.1.1
port: 6378
pass: secure
database: 1
socket: /var/run/redis/redis.sock
namespace: my:gitlab
eos
))
config_file = File.read('spec/fixtures/gitlab_config_redis.yml')
config.instance_variable_set(:@config, YAML.load(config_file))
end
 
it { config.redis['bin'].should eq('/usr/bin/redis-cli') }
Loading
Loading
@@ -26,6 +17,7 @@ eos
it { config.redis['namespace'].should eq('my:gitlab') }
it { config.redis['socket'].should eq('/var/run/redis/redis.sock') }
it { config.redis['pass'].should eq('secure') }
it { config.redis['sentinels'].should eq([{ 'host' => '127.0.0.1', 'port' => 26380 }]) }
end
 
describe :gitlab_url do
Loading
Loading
Loading
Loading
@@ -276,32 +276,34 @@ describe GitlabNet, vcr: true do
 
expect_any_instance_of(Redis).to receive(:initialize).with({ host: '127.0.0.1',
port: 6379,
db: 0 }).and_call_original
db: 0 })
gitlab_net.redis_client
end
end
 
context "with host and port" do
it 'uses the specified host and port' do
context "with password" do
it 'uses the specified host, port, and password' do
allow(gitlab_net).to receive(:config).and_return(config)
allow(config).to receive(:redis).and_return( { 'host' => 'localhost', 'port' => 1123 } )
allow(config).to receive(:redis).and_return( { 'host' => 'localhost', 'port' => 1123, 'pass' => 'secret' } )
 
expect_any_instance_of(Redis).to receive(:initialize).with({ host: 'localhost',
port: 1123,
db: 0 }).and_call_original
db: 0,
password: 'secret'})
gitlab_net.redis_client
end
end
 
context "with password" do
it 'uses the specified host, port, and password' do
context "with sentinels" do
it 'uses the specified sentinels' do
allow(gitlab_net).to receive(:config).and_return(config)
allow(config).to receive(:redis).and_return( { 'host' => 'localhost', 'port' => 1123, 'pass' => 'secret' } )
allow(config).to receive(:redis).and_return({ 'host' => 'localhost', 'port' => 1123,
'sentinels' => [{'host' => '127.0.0.1', 'port' => 26380}] })
 
expect_any_instance_of(Redis).to receive(:initialize).with({ host: 'localhost',
port: 1123,
db: 0,
password: 'secret'}).and_call_original
sentinels: [{host: '127.0.0.1', port: 26380}] })
gitlab_net.redis_client
end
end
Loading
Loading
@@ -314,7 +316,7 @@ describe GitlabNet, vcr: true do
allow(gitlab_net).to receive(:config).and_return(config)
allow(config).to receive(:redis).and_return( { 'socket' => socket })
 
expect_any_instance_of(Redis).to receive(:initialize).with({ path: socket, db: 0 }).and_call_original
expect_any_instance_of(Redis).to receive(:initialize).with({ path: socket, db: 0 })
gitlab_net.redis_client
end
end
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment