CID-472: fix ordering issues in name builder

This commit is contained in:
Anton Chuchkalov 2016-04-19 19:41:29 +03:00
parent b1d99d2e0a
commit 8f23862ef4
2 changed files with 15 additions and 6 deletions

View File

@ -63,9 +63,14 @@ class Devops::Executor::StackExecutor
end
def increment_variable_value(variable_name)
used_values = @already_used_incrementers_values[variable_name] || []
prev_value = used_values.sort.detect {|t| !used_values.include?(t+1)}
@incrementers_values[variable_name] = prev_value.to_i + 1
used_values = (@already_used_incrementers_values[variable_name] || []).map(&:to_i)
if !used_values || used_values.empty?
next_value = 1
else
next_value = (1..used_values.size).detect {|i| !used_values.include?(i) }
next_value ||= used_values.size + 1
end
@incrementers_values[variable_name] = next_value
end
end
end

View File

@ -63,8 +63,7 @@ class Devops::Executor::StackExecutor
it "continues with next values if hash isn't empty" do
set_mask('node-:increment-slave:')
expect( builder_with_incrementers('slave' => []).build_node_name ).to eq 'node-01'
expect( builder_with_incrementers('slave' => [1]).build_node_name ).to eq 'node-02'
expect( builder_with_incrementers('slave' => [50]).build_node_name ).to eq 'node-51'
expect( builder_with_incrementers('slave' => [1,2]).build_node_name ).to eq 'node-03'
end
it 'uses missed value' do
@ -72,6 +71,11 @@ class Devops::Executor::StackExecutor
expect( builder_with_incrementers('slave' => [1,2,4]).build_node_name ).to eq 'node-03'
end
it 'uses missed value at the beginning of sequence' do
set_mask('node-:increment-slave:')
expect( builder_with_incrementers('slave' => [3]).build_node_name ).to eq 'node-01'
end
it 'properly recognize floats that may come from mongo' do
set_mask('node-:increment-slave:')
expect( builder_with_incrementers('slave' => [1.0]).build_node_name ).to eq 'node-02'
@ -79,7 +83,7 @@ class Devops::Executor::StackExecutor
it 'could substitute different incrementers at once' do
set_mask('node-:increment-slave:-:increment-master:')
expect( builder_with_incrementers('slave' => [1], 'master' => [3]).build_node_name ).to eq 'node-02-04'
expect( builder_with_incrementers('slave' => [1], 'master' => [1,2,3]).build_node_name ).to eq 'node-02-04'
end
end