puppet-pacemaker/spec/functions/pacemaker_cluster_nodes_spe...

120 lines
4.3 KiB
Ruby

require 'spec_helper'
describe 'pacemaker_cluster_nodes' do
context 'interface' do
it { is_expected.not_to eq(nil) }
it { is_expected.to run.with_params.and_raise_error(ArgumentError) }
it { is_expected.to run.with_params(1).and_raise_error(Puppet::Error, /Got unsupported nodes input data/) }
end
it 'can parse the input as a node list string' do
input = 'n1 n2a,n2b n3, ,n4'
hash = {
"1"=>{"ring0"=>"n1", "id"=>"1"},
"2"=>{"ring0"=>"n2a", "ring1"=>"n2b", "id"=>"2"},
"3"=>{"ring0"=>"n3", "id"=>"3"},
"4"=>{"ring1"=>"n4", "id"=>"4"},
}
array = %w(n1 n2a n2b n3 n4)
list = 'n1 n2a,n2b n3 ,n4'
is_expected.to run.with_params(input, 'hash').and_return(hash)
is_expected.to run.with_params(input, 'array').and_return(array)
is_expected.to run.with_params(input, 'list').and_return(list)
end
it 'can parse the input as an array of nodes' do
input = ['n1', 'n2a,n2b', %w(n3a n3b), [nil, 'n4']]
hash = {
"1"=>{"ring0"=>"n1", "id"=>"1"},
"2"=>{"ring0"=>"n2a", "ring1"=>"n2b", "id"=>"2"},
"3"=>{"ring0"=>"n3a", "ring1"=>"n3b", "id"=>"3"},
"4"=>{"ring1"=>"n4", "id"=>"4"},
}
array = %w(n1 n2a n2b n3a n3b n4)
list = 'n1 n2a,n2b n3a,n3b ,n4'
is_expected.to run.with_params(input, 'hash').and_return(hash)
is_expected.to run.with_params(input, 'array').and_return(array)
is_expected.to run.with_params(input, 'list').and_return(list)
end
it 'should parse the input as a hash structure' do
input = {
nil => {
'vote' => '2',
'ring0' => '192.168.0.1',
'ring1' => '172.16.0.1',
},
1 => {
'name' => 'n2',
'ip' => '192.168.0.2',
'ring1' => '172.16.0.2',
},
:a => {
'name' => '192.168.0.3',
'ring1' => '172.16.0.3',
},
'192.168.0.4' => {
'ring1' => '172.16.0.4',
},
'node5' => {
'id' => '10',
},
}
hash = {
"1"=>{"ring0"=>"192.168.0.1", "ring1"=>"172.16.0.1", "vote"=>"2", "id"=>"1"},
"2"=>{"ring0"=>"192.168.0.2", "ring1"=>"172.16.0.2", "name"=>"n2", "id"=>"2"},
"3"=>{"ring0"=>"192.168.0.3", "ring1"=>"172.16.0.3", "name"=>"192.168.0.3", "id"=>"3"},
"4"=>{"ring0"=>"192.168.0.4", "ring1"=>"172.16.0.4", "name"=>"192.168.0.4", "id"=>"4"},
"10"=>{"ring0"=>"node5", "name"=>"node5", "id"=>"10"},
}
array = %w(192.168.0.1 172.16.0.1 192.168.0.2 172.16.0.2 192.168.0.3 172.16.0.3 192.168.0.4 172.16.0.4 node5)
list = '192.168.0.1,172.16.0.1 192.168.0.2,172.16.0.2 192.168.0.3,172.16.0.3 192.168.0.4,172.16.0.4 node5'
is_expected.to run.with_params(input, 'hash').and_return(hash)
is_expected.to run.with_params(input, 'array').and_return(array)
is_expected.to run.with_params(input, 'list').and_return(list)
end
it 'should parse the input as a an array of hashes' do
input = [
{
'vote' => '2',
'ring0' => '192.168.0.1',
'ring1' => '172.16.0.1',
},
{
'name' => 'n2',
'ip' => '192.168.0.2',
'ring1' => '172.16.0.2',
},
{
'name' => '192.168.0.3',
'ring1' => '172.16.0.3',
},
{
'ring1' => '172.16.0.4',
},
{
'id' => '10',
'ring0' => '192.168.0.5',
},
{
'ring0' => '192.168.0.6',
}
]
hash = {
"1"=>{"ring0"=>"192.168.0.1", "ring1"=>"172.16.0.1", "vote"=>"2", "id"=>"1"},
"2"=>{"ring0"=>"192.168.0.2", "ring1"=>"172.16.0.2", "name"=>"n2", "id"=>"2"},
"3"=>{"ring0"=>"192.168.0.3", "ring1"=>"172.16.0.3", "name"=>"192.168.0.3", "id"=>"3"},
"4"=>{"ring1"=>"172.16.0.4", "id"=>"4"},
"10"=>{"ring0"=>"192.168.0.5", "id"=>"10"},
"5"=>{"ring0"=>"192.168.0.6", "id"=>"5"},
}
array = %w(192.168.0.1 172.16.0.1 192.168.0.2 172.16.0.2 192.168.0.3 172.16.0.3 172.16.0.4 192.168.0.5 192.168.0.6)
list = '192.168.0.1,172.16.0.1 192.168.0.2,172.16.0.2 192.168.0.3,172.16.0.3 ,172.16.0.4 192.168.0.5 192.168.0.6'
is_expected.to run.with_params(input, 'hash').and_return(hash)
is_expected.to run.with_params(input, 'array').and_return(array)
is_expected.to run.with_params(input, 'list').and_return(list)
end
end