def test_task_status_empty_context(self): task_route = 0 task_name = 't1' task_flow_pointer_id = constants.TASK_STATE_ROUTE_FORMAT % (task_name, str(task_route)) context = None self.assertEqual(funcs.task_status_(context, task_name, task_route), statuses.UNSET) context = {} self.assertEqual(funcs.task_status_(context, task_name, task_route), statuses.UNSET) context = {'__state': None} self.assertEqual(funcs.task_status_(context, task_name, task_route), statuses.UNSET) context = {'__state': {}} self.assertEqual(funcs.task_status_(context, task_name, task_route), statuses.UNSET) context = {'__state': {'tasks': None}} self.assertEqual(funcs.task_status_(context, task_name, task_route), statuses.UNSET) context = {'__state': {'tasks': {}}} self.assertEqual(funcs.task_status_(context, task_name, task_route), statuses.UNSET) task_pointers = {task_flow_pointer_id: None} context = {'__state': {'tasks': task_pointers}} self.assertEqual(funcs.task_status_(context, task_name, task_route), statuses.UNSET) task_pointers = {task_flow_pointer_id: 0} context = {'__state': {'tasks': task_pointers, 'sequence': [None]}} self.assertEqual(funcs.task_status_(context, task_name, task_route), statuses.UNSET)
def test_task_status_empty_context_with_no_given_route_but_current_task_set( self): task_route = 0 task_name = 't1' task_flow_pointer_id = constants.TASK_STATE_ROUTE_FORMAT % ( task_name, str(task_route)) task_pointers = {task_flow_pointer_id: None} context_test_cases = [{}, { '__state': None }, { '__state': {} }, { '__state': { 'tasks': None } }, { '__state': { 'tasks': task_pointers } }, { '__state': { 'tasks': task_pointers, 'sequence': [None] } }] for context in context_test_cases: context['__current_task'] = {'id': task_name, 'route': task_route} self.assertEqual(funcs.task_status_(context, task_name), statuses.UNSET)
def test_task_status(self): task_route = 0 task_name = 't1' task_flow_pointer_id = constants.TASK_STATE_ROUTE_FORMAT % (task_name, str(task_route)) task_pointers = {task_flow_pointer_id: 0} context = {'__state': {'tasks': task_pointers, 'sequence': [{'status': statuses.RUNNING}]}} actual_task_status = funcs.task_status_(context, task_name, route=task_route) self.assertEqual(actual_task_status, statuses.RUNNING)
def test_task_status(self): task_route = 0 task_name = "t1" task_flow_pointer_id = constants.TASK_STATE_ROUTE_FORMAT % (task_name, str(task_route)) task_pointers = {task_flow_pointer_id: 0} context = {"__state": {"tasks": task_pointers, "sequence": [{"status": statuses.RUNNING}]}} actual_task_status = funcs.task_status_(context, task_name, route=task_route) self.assertEqual(actual_task_status, statuses.RUNNING)
def test_task_status_empty_context_with_no_given_route_but_current_task_set(self): task_route = 0 task_name = "t1" task_flow_pointer_id = constants.TASK_STATE_ROUTE_FORMAT % (task_name, str(task_route)) task_pointers = {task_flow_pointer_id: None} context_test_cases = [ {}, {"__state": None}, {"__state": {}}, {"__state": {"tasks": None}}, {"__state": {"tasks": task_pointers}}, {"__state": {"tasks": task_pointers, "sequence": [None]}}, ] for context in context_test_cases: context["__current_task"] = {"id": task_name, "route": task_route} self.assertEqual(funcs.task_status_(context, task_name), statuses.UNSET)
def test_task_status_of_tasks_along_splits(self): task_pointers = { 't1__r0': 0, 't2__r0': 1, 't3__r0': 2, 't4__r1': 3, 't4__r2': 4, 't5__r1': 5, 't5__r2': 6, 't6__r1': 7, 't6__r2': 8, 't7__r3': 9, 't7__r4': 10, 't7__r5': 11, 't7__r6': 12 } task_flow_entries = [ {'id': 't1', 'route': 0, 'status': statuses.SUCCEEDED}, {'id': 't2', 'route': 0, 'status': statuses.SUCCEEDED}, {'id': 't3', 'route': 0, 'status': statuses.SUCCEEDED}, {'id': 't4', 'route': 1, 'status': statuses.SUCCEEDED}, {'id': 't4', 'route': 2, 'status': statuses.FAILED}, {'id': 't5', 'route': 1, 'status': statuses.SUCCEEDED}, {'id': 't5', 'route': 2, 'status': statuses.FAILED}, {'id': 't6', 'route': 1, 'status': statuses.SUCCEEDED}, {'id': 't6', 'route': 2, 'status': statuses.FAILED}, {'id': 't7', 'route': 3, 'status': statuses.SUCCEEDED}, {'id': 't7', 'route': 4, 'status': statuses.FAILED}, {'id': 't7', 'route': 5, 'status': statuses.RUNNING}, {'id': 't7', 'route': 6, 'status': statuses.DELAYED} ] routes = [ [], ['t2__t0'], ['t3__t0'], ['t2__t0', 't5__t0'], ['t3__t0', 't5__t0'], ['t2__t0', 't6__t0'], ['t3__t0', 't6__t0'] ] context = { '__state': { 'tasks': task_pointers, 'sequence': task_flow_entries, 'routes': routes } } # Check the task statuses along route 1. current_ctx = copy.deepcopy(context) current_ctx['__current_task'] = {'id': 't7', 'route': 3} self.assertEqual(funcs.task_status_(current_ctx, 't1'), statuses.SUCCEEDED) self.assertEqual(funcs.task_status_(current_ctx, 't2'), statuses.SUCCEEDED) self.assertEqual(funcs.task_status_(current_ctx, 't3'), statuses.SUCCEEDED) self.assertEqual(funcs.task_status_(current_ctx, 't4'), statuses.SUCCEEDED) self.assertEqual(funcs.task_status_(current_ctx, 't5'), statuses.SUCCEEDED) self.assertEqual(funcs.task_status_(current_ctx, 't6'), statuses.SUCCEEDED) self.assertEqual(funcs.task_status_(current_ctx, 't7'), statuses.SUCCEEDED) # Check the task statuses along route 2. current_ctx = copy.deepcopy(context) current_ctx['__current_task'] = {'id': 't7', 'route': 4} self.assertEqual(funcs.task_status_(current_ctx, 't1'), statuses.SUCCEEDED) self.assertEqual(funcs.task_status_(current_ctx, 't2'), statuses.SUCCEEDED) self.assertEqual(funcs.task_status_(current_ctx, 't3'), statuses.SUCCEEDED) self.assertEqual(funcs.task_status_(current_ctx, 't4'), statuses.FAILED) self.assertEqual(funcs.task_status_(current_ctx, 't5'), statuses.FAILED) self.assertEqual(funcs.task_status_(current_ctx, 't6'), statuses.FAILED) self.assertEqual(funcs.task_status_(current_ctx, 't7'), statuses.FAILED) # Check the task statuses along route 3. current_ctx = copy.deepcopy(context) current_ctx['__current_task'] = {'id': 't7', 'route': 5} self.assertEqual(funcs.task_status_(current_ctx, 't1'), statuses.SUCCEEDED) self.assertEqual(funcs.task_status_(current_ctx, 't2'), statuses.SUCCEEDED) self.assertEqual(funcs.task_status_(current_ctx, 't3'), statuses.SUCCEEDED) self.assertEqual(funcs.task_status_(current_ctx, 't4'), statuses.SUCCEEDED) self.assertEqual(funcs.task_status_(current_ctx, 't5'), statuses.SUCCEEDED) self.assertEqual(funcs.task_status_(current_ctx, 't6'), statuses.SUCCEEDED) self.assertEqual(funcs.task_status_(current_ctx, 't7'), statuses.RUNNING) # Check the task statuses along route 4. current_ctx = copy.deepcopy(context) current_ctx['__current_task'] = {'id': 't7', 'route': 6} self.assertEqual(funcs.task_status_(current_ctx, 't1'), statuses.SUCCEEDED) self.assertEqual(funcs.task_status_(current_ctx, 't2'), statuses.SUCCEEDED) self.assertEqual(funcs.task_status_(current_ctx, 't3'), statuses.SUCCEEDED) self.assertEqual(funcs.task_status_(current_ctx, 't4'), statuses.FAILED) self.assertEqual(funcs.task_status_(current_ctx, 't5'), statuses.FAILED) self.assertEqual(funcs.task_status_(current_ctx, 't6'), statuses.FAILED) self.assertEqual(funcs.task_status_(current_ctx, 't7'), statuses.DELAYED)
def test_task_status_of_tasks_along_split(self): task_pointers = { 't1__r0': 0, 't2__r0': 1, 't3__r0': 2, 't4__r1': 3, 't4__r2': 4, 't5__r1': 5, 't5__r2': 6, 't6__r1': 7, 't6__r2': 8 } task_flow_entries = [ {'id': 't1', 'route': 0, 'status': statuses.SUCCEEDED}, {'id': 't2', 'route': 0, 'status': statuses.SUCCEEDED}, {'id': 't3', 'route': 0, 'status': statuses.SUCCEEDED}, {'id': 't4', 'route': 1, 'status': statuses.SUCCEEDED}, {'id': 't4', 'route': 2, 'status': statuses.FAILED}, {'id': 't5', 'route': 1, 'status': statuses.SUCCEEDED}, {'id': 't5', 'route': 2, 'status': statuses.FAILED}, {'id': 't6', 'route': 1, 'status': statuses.SUCCEEDED}, {'id': 't6', 'route': 2, 'status': statuses.FAILED}, ] routes = [ [], ['t2__t0'], ['t3__t0'], ] context = { '__state': { 'tasks': task_pointers, 'sequence': task_flow_entries, 'routes': routes } } # Check the task statuses along route 1. current_ctx = copy.deepcopy(context) current_ctx['__current_task'] = {'id': 't6', 'route': 1} self.assertEqual(funcs.task_status_(current_ctx, 't1'), statuses.SUCCEEDED) self.assertEqual(funcs.task_status_(current_ctx, 't2'), statuses.SUCCEEDED) self.assertEqual(funcs.task_status_(current_ctx, 't3'), statuses.SUCCEEDED) self.assertEqual(funcs.task_status_(current_ctx, 't4'), statuses.SUCCEEDED) self.assertEqual(funcs.task_status_(current_ctx, 't5'), statuses.SUCCEEDED) self.assertEqual(funcs.task_status_(current_ctx, 't6'), statuses.SUCCEEDED) # Check the task statuses along route 2. current_ctx = copy.deepcopy(context) current_ctx['__current_task'] = {'id': 't6', 'route': 2} self.assertEqual(funcs.task_status_(current_ctx, 't1'), statuses.SUCCEEDED) self.assertEqual(funcs.task_status_(current_ctx, 't2'), statuses.SUCCEEDED) self.assertEqual(funcs.task_status_(current_ctx, 't3'), statuses.SUCCEEDED) self.assertEqual(funcs.task_status_(current_ctx, 't4'), statuses.FAILED) self.assertEqual(funcs.task_status_(current_ctx, 't5'), statuses.FAILED) self.assertEqual(funcs.task_status_(current_ctx, 't6'), statuses.FAILED)
def test_task_status_of_tasks_along_splits(self): task_pointers = { "t1__r0": 0, "t2__r0": 1, "t3__r0": 2, "t4__r1": 3, "t4__r2": 4, "t5__r1": 5, "t5__r2": 6, "t6__r1": 7, "t6__r2": 8, "t7__r3": 9, "t7__r4": 10, "t7__r5": 11, "t7__r6": 12, } task_flow_entries = [ {"id": "t1", "route": 0, "status": statuses.SUCCEEDED}, {"id": "t2", "route": 0, "status": statuses.SUCCEEDED}, {"id": "t3", "route": 0, "status": statuses.SUCCEEDED}, {"id": "t4", "route": 1, "status": statuses.SUCCEEDED}, {"id": "t4", "route": 2, "status": statuses.FAILED}, {"id": "t5", "route": 1, "status": statuses.SUCCEEDED}, {"id": "t5", "route": 2, "status": statuses.FAILED}, {"id": "t6", "route": 1, "status": statuses.SUCCEEDED}, {"id": "t6", "route": 2, "status": statuses.FAILED}, {"id": "t7", "route": 3, "status": statuses.SUCCEEDED}, {"id": "t7", "route": 4, "status": statuses.FAILED}, {"id": "t7", "route": 5, "status": statuses.RUNNING}, {"id": "t7", "route": 6, "status": statuses.DELAYED}, ] routes = [ [], ["t2__t0"], ["t3__t0"], ["t2__t0", "t5__t0"], ["t3__t0", "t5__t0"], ["t2__t0", "t6__t0"], ["t3__t0", "t6__t0"], ] context = { "__state": {"tasks": task_pointers, "sequence": task_flow_entries, "routes": routes} } # Check the task statuses along route 1. current_ctx = json_util.deepcopy(context) current_ctx["__current_task"] = {"id": "t7", "route": 3} self.assertEqual(funcs.task_status_(current_ctx, "t1"), statuses.SUCCEEDED) self.assertEqual(funcs.task_status_(current_ctx, "t2"), statuses.SUCCEEDED) self.assertEqual(funcs.task_status_(current_ctx, "t3"), statuses.SUCCEEDED) self.assertEqual(funcs.task_status_(current_ctx, "t4"), statuses.SUCCEEDED) self.assertEqual(funcs.task_status_(current_ctx, "t5"), statuses.SUCCEEDED) self.assertEqual(funcs.task_status_(current_ctx, "t6"), statuses.SUCCEEDED) self.assertEqual(funcs.task_status_(current_ctx, "t7"), statuses.SUCCEEDED) # Check the task statuses along route 2. current_ctx = json_util.deepcopy(context) current_ctx["__current_task"] = {"id": "t7", "route": 4} self.assertEqual(funcs.task_status_(current_ctx, "t1"), statuses.SUCCEEDED) self.assertEqual(funcs.task_status_(current_ctx, "t2"), statuses.SUCCEEDED) self.assertEqual(funcs.task_status_(current_ctx, "t3"), statuses.SUCCEEDED) self.assertEqual(funcs.task_status_(current_ctx, "t4"), statuses.FAILED) self.assertEqual(funcs.task_status_(current_ctx, "t5"), statuses.FAILED) self.assertEqual(funcs.task_status_(current_ctx, "t6"), statuses.FAILED) self.assertEqual(funcs.task_status_(current_ctx, "t7"), statuses.FAILED) # Check the task statuses along route 3. current_ctx = json_util.deepcopy(context) current_ctx["__current_task"] = {"id": "t7", "route": 5} self.assertEqual(funcs.task_status_(current_ctx, "t1"), statuses.SUCCEEDED) self.assertEqual(funcs.task_status_(current_ctx, "t2"), statuses.SUCCEEDED) self.assertEqual(funcs.task_status_(current_ctx, "t3"), statuses.SUCCEEDED) self.assertEqual(funcs.task_status_(current_ctx, "t4"), statuses.SUCCEEDED) self.assertEqual(funcs.task_status_(current_ctx, "t5"), statuses.SUCCEEDED) self.assertEqual(funcs.task_status_(current_ctx, "t6"), statuses.SUCCEEDED) self.assertEqual(funcs.task_status_(current_ctx, "t7"), statuses.RUNNING) # Check the task statuses along route 4. current_ctx = json_util.deepcopy(context) current_ctx["__current_task"] = {"id": "t7", "route": 6} self.assertEqual(funcs.task_status_(current_ctx, "t1"), statuses.SUCCEEDED) self.assertEqual(funcs.task_status_(current_ctx, "t2"), statuses.SUCCEEDED) self.assertEqual(funcs.task_status_(current_ctx, "t3"), statuses.SUCCEEDED) self.assertEqual(funcs.task_status_(current_ctx, "t4"), statuses.FAILED) self.assertEqual(funcs.task_status_(current_ctx, "t5"), statuses.FAILED) self.assertEqual(funcs.task_status_(current_ctx, "t6"), statuses.FAILED) self.assertEqual(funcs.task_status_(current_ctx, "t7"), statuses.DELAYED)