rearrange and refactor specs to make more sense
This commit is contained in:
parent
b463901f98
commit
55e60a989e
|
@ -1,5 +1,5 @@
|
||||||
class AwsHaRelease
|
class AwsHaRelease
|
||||||
attr_reader :max_size_change
|
attr_reader :group
|
||||||
|
|
||||||
def initialize(opts)
|
def initialize(opts)
|
||||||
AWS.config(access_key_id: opts[:aws_access_key], secret_access_key: opts[:aws_secret_key], region: opts[:region])
|
AWS.config(access_key_id: opts[:aws_access_key], secret_access_key: opts[:aws_secret_key], region: opts[:region])
|
||||||
|
@ -20,7 +20,7 @@ class AwsHaRelease
|
||||||
|
|
||||||
if @group.max_size == @group.desired_capacity
|
if @group.max_size == @group.desired_capacity
|
||||||
@group.update(max_size: @group.max_size + 1)
|
@group.update(max_size: @group.max_size + 1)
|
||||||
@max_size_change += 1
|
@max_size_change = 1
|
||||||
end
|
end
|
||||||
|
|
||||||
@group.update(desired_capacity: @group.desired_capacity + 1)
|
@group.update(desired_capacity: @group.desired_capacity + 1)
|
||||||
|
@ -39,6 +39,7 @@ class AwsHaRelease
|
||||||
|
|
||||||
if @max_size_change > 0
|
if @max_size_change > 0
|
||||||
@group.update(max_size: @group.max_size - @max_size_change)
|
@group.update(max_size: @group.max_size - @max_size_change)
|
||||||
|
@max_size_change = 0
|
||||||
end
|
end
|
||||||
|
|
||||||
@group.resume_all_processes
|
@group.resume_all_processes
|
||||||
|
|
|
@ -43,61 +43,66 @@ describe 'aws-ha-release' do
|
||||||
@aws_ha_release.execute!
|
@aws_ha_release.execute!
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'adjusts the maximum size if the desired capacity is equal to it' do
|
it 'adjusts the max size as well as the desired capacity if the desired capacity is equal to it' do
|
||||||
@group.update(max_size: 1, desired_capacity: 1)
|
@group.update(max_size: 1, desired_capacity: 1)
|
||||||
expect(@aws_ha_release.max_size_change).to eq 0
|
|
||||||
|
|
||||||
|
@aws_ha_release.group.should_receive(:update).with(max_size: 2).ordered.and_call_original
|
||||||
|
@aws_ha_release.group.should_receive(:update).with(desired_capacity: 2).ordered.and_call_original
|
||||||
|
@aws_ha_release.group.should_receive(:update).with(desired_capacity: 1).ordered.and_call_original
|
||||||
|
@aws_ha_release.group.should_receive(:update).with(max_size: 1).ordered.and_call_original
|
||||||
@aws_ha_release.execute!
|
@aws_ha_release.execute!
|
||||||
|
|
||||||
expect(@group.max_size).to eq 2
|
|
||||||
expect(@aws_ha_release.max_size_change).to eq 1
|
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'increases the desired capacity by 1' do
|
it 'only adjusts the desired capacity if max size does not equal desired capacity' do
|
||||||
|
@aws_ha_release.group.should_receive(:update).with(desired_capacity: 2).ordered.and_call_original
|
||||||
|
@aws_ha_release.group.should_receive(:update).with(desired_capacity: 1).ordered.and_call_original
|
||||||
@aws_ha_release.execute!
|
@aws_ha_release.execute!
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
expect(@group.desired_capacity).to eq 2
|
describe 'determining if instances are in service' do
|
||||||
|
before do
|
||||||
|
@group = as.groups.create opts[:as_group_name]
|
||||||
|
@aws_ha_release = AwsHaRelease.new(opts)
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'determining if instances are in service' do
|
it 'checks all instances across a given load balancer' do
|
||||||
it 'checks all instances across a given load balancer' do
|
load_balancer = AWS::FakeELB::LoadBalancer.new 'test_load_balancer_01'
|
||||||
load_balancer = AWS::FakeELB::LoadBalancer.new 'test_load_balancer_01'
|
|
||||||
|
|
||||||
expect(@aws_ha_release.instances_inservice?(load_balancer)).to eq false
|
expect(@aws_ha_release.instances_inservice?(load_balancer)).to eq false
|
||||||
|
|
||||||
load_balancer.instances.health[1] = {
|
load_balancer.instances.health[1] = {
|
||||||
instance: AWS::FakeEC2::Instance.new,
|
instance: AWS::FakeEC2::Instance.new,
|
||||||
description: 'N/A',
|
description: 'N/A',
|
||||||
state: 'InService',
|
state: 'InService',
|
||||||
reason_code: 'N/A'
|
reason_code: 'N/A'
|
||||||
}
|
}
|
||||||
|
|
||||||
expect(@aws_ha_release.instances_inservice?(load_balancer)).to eq true
|
expect(@aws_ha_release.instances_inservice?(load_balancer)).to eq true
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'checks all instances across an array of load balancers' do
|
it 'checks all instances across an array of load balancers' do
|
||||||
load_balancers = [AWS::FakeELB::LoadBalancer.new('test_load_balancer_01'), AWS::FakeELB::LoadBalancer.new('test_load_balancer_02')]
|
load_balancers = [AWS::FakeELB::LoadBalancer.new('test_load_balancer_01'), AWS::FakeELB::LoadBalancer.new('test_load_balancer_02')]
|
||||||
|
|
||||||
expect(@aws_ha_release.all_instances_inservice?(load_balancers)).to eq false
|
expect(@aws_ha_release.all_instances_inservice?(load_balancers)).to eq false
|
||||||
|
|
||||||
load_balancers[0].instances.health[1] = {
|
load_balancers[0].instances.health[1] = {
|
||||||
instance: AWS::FakeEC2::Instance.new,
|
instance: AWS::FakeEC2::Instance.new,
|
||||||
description: 'N/A',
|
description: 'N/A',
|
||||||
state: 'InService',
|
state: 'InService',
|
||||||
reason_code: 'N/A'
|
reason_code: 'N/A'
|
||||||
}
|
}
|
||||||
|
|
||||||
expect(@aws_ha_release.all_instances_inservice?(load_balancers)).to eq false
|
expect(@aws_ha_release.all_instances_inservice?(load_balancers)).to eq false
|
||||||
|
|
||||||
load_balancers[1].instances.health[1] = {
|
load_balancers[1].instances.health[1] = {
|
||||||
instance: AWS::FakeEC2::Instance.new,
|
instance: AWS::FakeEC2::Instance.new,
|
||||||
description: 'N/A',
|
description: 'N/A',
|
||||||
state: 'InService',
|
state: 'InService',
|
||||||
reason_code: 'N/A'
|
reason_code: 'N/A'
|
||||||
}
|
}
|
||||||
|
|
||||||
expect(@aws_ha_release.all_instances_inservice?(load_balancers)).to eq true
|
expect(@aws_ha_release.all_instances_inservice?(load_balancers)).to eq true
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -37,6 +37,10 @@ module AWS
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def resume_all_processes
|
||||||
|
@suspended_processes.clear
|
||||||
|
end
|
||||||
|
|
||||||
def update(options = {})
|
def update(options = {})
|
||||||
options.each do |key, value|
|
options.each do |key, value|
|
||||||
self.instance_variable_set "@#{key}", value
|
self.instance_variable_set "@#{key}", value
|
||||||
|
|
Loading…
Reference in New Issue
Block a user