81 lines
3.8 KiB
Ruby
81 lines
3.8 KiB
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
require 'spec_helper'
|
||
|
|
||
|
RSpec.describe Gitlab::Patch::NodeLoader, feature_category: :redis do
|
||
|
using RSpec::Parameterized::TableSyntax
|
||
|
|
||
|
describe '#fetch_node_info' do
|
||
|
let(:redis) { double(:redis) } # rubocop:disable RSpec/VerifiedDoubles
|
||
|
|
||
|
# rubocop:disable Naming/InclusiveLanguage
|
||
|
where(:case_name, :args, :value) do
|
||
|
[
|
||
|
[
|
||
|
'when only ip address is present',
|
||
|
"07c37df 127.0.0.1:30004@31004 slave e7d1eec 0 1426238317239 4 connected
|
||
|
67ed2db 127.0.0.1:30002@31002 master - 0 1426238316232 2 connected 5461-10922
|
||
|
292f8b3 127.0.0.1:30003@31003 master - 0 1426238318243 3 connected 10923-16383
|
||
|
6ec2392 127.0.0.1:30005@31005 slave 67ed2db 0 1426238316232 5 connected
|
||
|
824fe11 127.0.0.1:30006@31006 slave 292f8b3 0 1426238317741 6 connected
|
||
|
e7d1eec 127.0.0.1:30001@31001 myself,master - 0 0 1 connected 0-5460",
|
||
|
{
|
||
|
'127.0.0.1:30004' => 'slave', '127.0.0.1:30002' => 'master', '127.0.0.1:30003' => 'master',
|
||
|
'127.0.0.1:30005' => 'slave', '127.0.0.1:30006' => 'slave', '127.0.0.1:30001' => 'master'
|
||
|
}
|
||
|
],
|
||
|
[
|
||
|
'when hostname is present',
|
||
|
"07c37df 127.0.0.1:30004@31004,host1 slave e7d1eec 0 1426238317239 4 connected
|
||
|
67ed2db 127.0.0.1:30002@31002,host2 master - 0 1426238316232 2 connected 5461-10922
|
||
|
292f8b3 127.0.0.1:30003@31003,host3 master - 0 1426238318243 3 connected 10923-16383
|
||
|
6ec2392 127.0.0.1:30005@31005,host4 slave 67ed2db 0 1426238316232 5 connected
|
||
|
824fe11 127.0.0.1:30006@31006,host5 slave 292f8b3 0 1426238317741 6 connected
|
||
|
e7d1eec 127.0.0.1:30001@31001,host6 myself,master - 0 0 1 connected 0-5460",
|
||
|
{
|
||
|
'host1:30004' => 'slave', 'host2:30002' => 'master', 'host3:30003' => 'master',
|
||
|
'host4:30005' => 'slave', 'host5:30006' => 'slave', 'host6:30001' => 'master'
|
||
|
}
|
||
|
],
|
||
|
[
|
||
|
'when auxiliary fields are present',
|
||
|
"07c37df 127.0.0.1:30004@31004,,shard-id=69bc slave e7d1eec 0 1426238317239 4 connected
|
||
|
67ed2db 127.0.0.1:30002@31002,,shard-id=114f master - 0 1426238316232 2 connected 5461-10922
|
||
|
292f8b3 127.0.0.1:30003@31003,,shard-id=fdb3 master - 0 1426238318243 3 connected 10923-16383
|
||
|
6ec2392 127.0.0.1:30005@31005,,shard-id=114f slave 67ed2db 0 1426238316232 5 connected
|
||
|
824fe11 127.0.0.1:30006@31006,,shard-id=fdb3 slave 292f8b3 0 1426238317741 6 connected
|
||
|
e7d1eec 127.0.0.1:30001@31001,,shard-id=69bc myself,master - 0 0 1 connected 0-5460",
|
||
|
{
|
||
|
'127.0.0.1:30004' => 'slave', '127.0.0.1:30002' => 'master', '127.0.0.1:30003' => 'master',
|
||
|
'127.0.0.1:30005' => 'slave', '127.0.0.1:30006' => 'slave', '127.0.0.1:30001' => 'master'
|
||
|
}
|
||
|
],
|
||
|
[
|
||
|
'when hostname and auxiliary fields are present',
|
||
|
"07c37df 127.0.0.1:30004@31004,host1,shard-id=69bc slave e7d1eec 0 1426238317239 4 connected
|
||
|
67ed2db 127.0.0.1:30002@31002,host2,shard-id=114f master - 0 1426238316232 2 connected 5461-10922
|
||
|
292f8b3 127.0.0.1:30003@31003,host3,shard-id=fdb3 master - 0 1426238318243 3 connected 10923-16383
|
||
|
6ec2392 127.0.0.1:30005@31005,host4,shard-id=114f slave 67ed2db 0 1426238316232 5 connected
|
||
|
824fe11 127.0.0.1:30006@31006,host5,shard-id=fdb3 slave 292f8b3 0 1426238317741 6 connected
|
||
|
e7d1eec 127.0.0.1:30001@31001,host6,shard-id=69bc myself,master - 0 0 1 connected 0-5460",
|
||
|
{
|
||
|
'host1:30004' => 'slave', 'host2:30002' => 'master', 'host3:30003' => 'master',
|
||
|
'host4:30005' => 'slave', 'host5:30006' => 'slave', 'host6:30001' => 'master'
|
||
|
}
|
||
|
]
|
||
|
]
|
||
|
end
|
||
|
# rubocop:enable Naming/InclusiveLanguage
|
||
|
|
||
|
with_them do
|
||
|
before do
|
||
|
allow(redis).to receive(:call).with([:cluster, :nodes]).and_return(args)
|
||
|
end
|
||
|
|
||
|
it do
|
||
|
expect(Redis::Cluster::NodeLoader.load_flags([redis])).to eq(value)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|