def test_running_tasks(self): """Tasks that have been launched are identified as 'running'""" running_task = EcsFargateTask(task_arn='AAA', last_status='RUNNING', desired_status='RUNNING', containers=[{}]) self.assertEqual(State.RUNNING, running_task.get_task_state())
def test_queued_tasks(self): """Tasks that are pending launch identified as 'queued'""" queued_tasks = [ EcsFargateTask(task_arn='AAA', last_status='PROVISIONING', desired_status='RUNNING', containers=[{}]), EcsFargateTask(task_arn='BBB', last_status='PENDING', desired_status='RUNNING', containers=[{}]), EcsFargateTask(task_arn='CCC', last_status='ACTIVATING', desired_status='RUNNING', containers=[{}]) ] for task in queued_tasks: self.assertEqual(State.QUEUED, task.get_task_state())
def test_stopped_tasks(self): """Tasks that have terminated are identified as either 'success' or 'failure'""" successful_container = {'exit_code': 0, 'last_status': 'STOPPED'} error_container = {'exit_code': 100, 'last_status': 'STOPPED'} for status in ('DEACTIVATING', 'STOPPING', 'DEPROVISIONING', 'STOPPED'): success_task = EcsFargateTask( task_arn='GOOD', last_status=status, desired_status='STOPPED', stopped_reason='Essential container in task exited', started_at=dt.datetime.now(), containers=[successful_container]) self.assertEqual(State.SUCCESS, success_task.get_task_state()) for status in ('DEACTIVATING', 'STOPPING', 'DEPROVISIONING', 'STOPPED'): failed_task = EcsFargateTask( task_arn='FAIL', last_status=status, desired_status='STOPPED', stopped_reason='Essential container in task exited', started_at=dt.datetime.now(), containers=[ successful_container, successful_container, error_container ]) self.assertEqual(State.FAILED, failed_task.get_task_state())
def test_removed_tasks(self): """Tasks that failed to launch are identified as 'removed'""" deprovisioning_tasks = [ EcsFargateTask(task_arn='DDD', last_status='DEACTIVATING', desired_status='STOPPED', containers=[{}]), EcsFargateTask(task_arn='EEE', last_status='STOPPING', desired_status='STOPPED', containers=[{}]), EcsFargateTask(task_arn='FFF', last_status='DEPROVISIONING', desired_status='STOPPED', containers=[{}]), ] for task in deprovisioning_tasks: self.assertEqual(State.REMOVED, task.get_task_state()) removed_task = EcsFargateTask( task_arn='DEAD', last_status='STOPPED', desired_status='STOPPED', containers=[{}], stopped_reason= 'Timeout waiting for network interface provisioning to complete.') self.assertEqual(State.REMOVED, removed_task.get_task_state())