def test_we_terminate_the_new_instances_if_the_instance_is_not_running(self, mock_ec2): project = {'name': 'MyProject', 'version': 'v34'} new_instances = ['i-232425', 'i-3434231'] mock_ec2.is_running.return_value = False mock_ec2.create_and_start_instances.return_value = new_instances job = Job(project) igor.deploy(job) mock_ec2.terminate.assert_called_with(new_instances) self.assertEquals(JobStatus.failed, job.get_status())
def test_we_can_update_the_status_of_a_job(self): unit = Job(None) self.assertEquals(JobStatus.pending, unit.get_status()) unit.set_status(JobStatus.done) self.assertEquals(JobStatus.done, unit.get_status()) unit.set_status(JobStatus.failed) self.assertEquals(JobStatus.failed, unit.get_status())
def test_we_deploy_an_instance_with_a_load_balancer_by_default(self, mock_loadbalancer, mock_ec2): project = {'name': 'MyProject', 'version': 'v34'} job = Job(project) new_instances = ['i-232425', 'i-3434231'] mock_ec2.create_and_start_instances.return_value = new_instances returned_loadbalancer = LoadBalancerStub() mock_loadbalancer.get_loadbalancer.return_value = returned_loadbalancer igor.deploy(job) mock_ec2.create_and_start_instances.assert_called_with(project) mock_loadbalancer.get_loadbalancer.assert_called_with(project) mock_ec2.is_running.assert_called_with(new_instances, project) mock_loadbalancer.attach.assert_called_with(returned_loadbalancer, new_instances) mock_loadbalancer.dettach.assert_called_with(returned_loadbalancer, ['i-8w78921', 'i-8w78921']) mock_ec2.terminate.assert_called_with(['i-8w78921', 'i-8w78921']) self.assertEquals(JobStatus.done, job.get_status())
def test_we_deploy_in_the_proper_order(self, mock_loadbalancer, mock_ec2): project = {'name': 'MyProject', 'version': 'v34', 'environment_tier': EnvironmentTier.WEB_SERVER} job = Job(project) new_instances = ['i-232425', 'i-3434231'] mock_ec2.create_and_start_instances.return_value = new_instances returned_loadbalancer = LoadBalancerStub() mock_loadbalancer.get_loadbalancer.return_value = returned_loadbalancer igor.deploy(job) mock_ec2.create_and_start_instances.assert_called_with(project) mock_loadbalancer.get_loadbalancer.assert_called_with(project) mock_ec2.is_running.assert_called_with(new_instances, project) mock_loadbalancer.attach.assert_called_with(returned_loadbalancer, new_instances) mock_loadbalancer.dettach.assert_called_with(returned_loadbalancer, ['i-8w78921', 'i-8w78921']) mock_ec2.terminate.assert_called_with(['i-8w78921', 'i-8w78921']) self.assertEquals(JobStatus.done, job.get_status())
def test_load_balancer_is_not_used_for_worker_projects(self, mock_loadbalancer, mock_ec2): project_attributes = {'name': 'MyProject', 'version': 'v34', 'environment_tier': EnvironmentTier.WORKER.value} job = Job(project_attributes) new_instances = ['i-232425', 'i-3434231'] old_instance_ids = ['i-232425', 'i-3434231', 'i-342112', 'i-7322912'] ids_to_terminate = ['i-342112', 'i-7322912'] old_instances = [InstanceStub(old_instance_ids[2]), InstanceStub(old_instance_ids[3])] mock_ec2.is_running.return_value = True mock_ec2.create_and_start_instances.return_value = new_instances mock_ec2.get_instances.return_value = old_instances igor.deploy(job) mock_ec2.create_and_start_instances.assert_called_with(project_attributes) mock_loadbalancer.get_loadbalancer.assert_not_called() mock_ec2.terminate.assert_called_with(ids_to_terminate) self.assertEquals(JobStatus.done, job.get_status())