rearrange and refactor specs to make more sense
This commit is contained in:
		
							parent
							
								
									b463901f98
								
							
						
					
					
						commit
						55e60a989e
					
				@ -1,5 +1,5 @@
 | 
			
		||||
class AwsHaRelease
 | 
			
		||||
  attr_reader :max_size_change
 | 
			
		||||
  attr_reader :group
 | 
			
		||||
 | 
			
		||||
  def initialize(opts)
 | 
			
		||||
    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
 | 
			
		||||
      @group.update(max_size: @group.max_size + 1)
 | 
			
		||||
      @max_size_change += 1
 | 
			
		||||
      @max_size_change = 1
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    @group.update(desired_capacity: @group.desired_capacity + 1)
 | 
			
		||||
@ -39,6 +39,7 @@ class AwsHaRelease
 | 
			
		||||
 | 
			
		||||
    if @max_size_change > 0
 | 
			
		||||
      @group.update(max_size: @group.max_size - @max_size_change)
 | 
			
		||||
      @max_size_change = 0
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    @group.resume_all_processes
 | 
			
		||||
 | 
			
		||||
@ -43,61 +43,66 @@ describe 'aws-ha-release' do
 | 
			
		||||
      @aws_ha_release.execute!
 | 
			
		||||
    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)
 | 
			
		||||
      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!
 | 
			
		||||
 | 
			
		||||
      expect(@group.max_size).to eq 2
 | 
			
		||||
      expect(@aws_ha_release.max_size_change).to eq 1
 | 
			
		||||
    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!
 | 
			
		||||
    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
 | 
			
		||||
 | 
			
		||||
    context 'determining if instances are in service' do
 | 
			
		||||
      it 'checks all instances across a given load balancer' do
 | 
			
		||||
        load_balancer = AWS::FakeELB::LoadBalancer.new 'test_load_balancer_01'
 | 
			
		||||
    it 'checks all instances across a given load balancer' do
 | 
			
		||||
      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] = {
 | 
			
		||||
          instance: AWS::FakeEC2::Instance.new,
 | 
			
		||||
          description: 'N/A',
 | 
			
		||||
          state: 'InService',
 | 
			
		||||
          reason_code: 'N/A'
 | 
			
		||||
        }
 | 
			
		||||
      load_balancer.instances.health[1] = {
 | 
			
		||||
        instance: AWS::FakeEC2::Instance.new,
 | 
			
		||||
        description: 'N/A',
 | 
			
		||||
        state: 'InService',
 | 
			
		||||
        reason_code: 'N/A'
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
        expect(@aws_ha_release.instances_inservice?(load_balancer)).to eq true
 | 
			
		||||
      end
 | 
			
		||||
      expect(@aws_ha_release.instances_inservice?(load_balancer)).to eq true
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
      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')]
 | 
			
		||||
    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')]
 | 
			
		||||
 | 
			
		||||
        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] = {
 | 
			
		||||
          instance: AWS::FakeEC2::Instance.new,
 | 
			
		||||
          description: 'N/A',
 | 
			
		||||
          state: 'InService',
 | 
			
		||||
          reason_code: 'N/A'
 | 
			
		||||
        }
 | 
			
		||||
      load_balancers[0].instances.health[1] = {
 | 
			
		||||
        instance: AWS::FakeEC2::Instance.new,
 | 
			
		||||
        description: 'N/A',
 | 
			
		||||
        state: 'InService',
 | 
			
		||||
        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] = {
 | 
			
		||||
          instance: AWS::FakeEC2::Instance.new,
 | 
			
		||||
          description: 'N/A',
 | 
			
		||||
          state: 'InService',
 | 
			
		||||
          reason_code: 'N/A'
 | 
			
		||||
        }
 | 
			
		||||
      load_balancers[1].instances.health[1] = {
 | 
			
		||||
        instance: AWS::FakeEC2::Instance.new,
 | 
			
		||||
        description: 'N/A',
 | 
			
		||||
        state: 'InService',
 | 
			
		||||
        reason_code: 'N/A'
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
        expect(@aws_ha_release.all_instances_inservice?(load_balancers)).to eq true
 | 
			
		||||
      end
 | 
			
		||||
      expect(@aws_ha_release.all_instances_inservice?(load_balancers)).to eq true
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -37,6 +37,10 @@ module AWS
 | 
			
		||||
        end
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      def resume_all_processes
 | 
			
		||||
        @suspended_processes.clear
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      def update(options = {})
 | 
			
		||||
        options.each do |key, value|
 | 
			
		||||
          self.instance_variable_set "@#{key}", value
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user