def testDispatchEvaluator_Matches(self): def InitiateEvaluator(*_): return [0] def UpdateEvaluator(*_): return [1] task = task_module.InMemoryTask(id='test_id', task_type='test', payload={}, status='pending', dependencies=[]) evaluator = evaluators.DispatchByEventTypeEvaluator( evaluator_map={ 'initiate': InitiateEvaluator, 'update': UpdateEvaluator, }) accumulator = {} self.assertEqual([0], evaluator( task, event_module.Event(type='initiate', target_task=None, payload={}), accumulator)) self.assertEqual([1], evaluator( task, event_module.Event(type='update', target_task=None, payload={}), accumulator))
def __init__(self, job): super(Evaluator, self).__init__(evaluators=( evaluators.FilteringEvaluator( predicate=evaluators.All(evaluators.TaskTypeEq('run_test'), ), delegate=evaluators.DispatchByEventTypeEvaluator({ 'initiate': evaluators.FilteringEvaluator(predicate=evaluators.Not( evaluators.TaskStatusIn( {'ongoing', 'failed', 'completed'})), delegate=InitiateEvaluator( job)), # For updates, we want to ensure that the initiate evaluator # has a chance to run on 'pending' tasks. 'update': evaluators.SequenceEvaluator([ evaluators.FilteringEvaluator( predicate=evaluators.Not( evaluators.TaskStatusIn( {'ongoing', 'failed', 'completed'})), delegate=InitiateEvaluator(job)), evaluators.FilteringEvaluator( predicate=evaluators.TaskStatusIn({'ongoing'}), delegate=UpdateEvaluator(job)), ]) })), evaluators.TaskPayloadLiftingEvaluator(), ))
def testDispatchEvaluator_Default(self): def MustNeverCall(*_): self.fail('Dispatch failure!') def DefaultEvaluator(*_): return [0] task = task_module.InMemoryTask( id='test_id', task_type='test', payload={}, status='pending', dependencies=[]) evaluator = evaluators.DispatchByEventTypeEvaluator( evaluator_map={ 'match_nothing': MustNeverCall, }, default_evaluator=DefaultEvaluator) accumulator = {} self.assertEqual([0], evaluator( task, event_module.Event( type='unrecognised', target_task=None, payload={}), accumulator))
def __init__(self, job): super(Evaluator, self).__init__( evaluators=( evaluators.TaskPayloadLiftingEvaluator(), evaluators.FilteringEvaluator( predicate=evaluators.All( evaluators.TaskTypeEq('find_isolate'), evaluators.TaskIsEventTarget(), evaluators.Not( evaluators.TaskStatusIn( {'completed', 'failed', 'cancelled'})), ), delegate=evaluators.DispatchByEventTypeEvaluator({ 'initiate': InitiateEvaluator(job), 'update': UpdateEvaluator(job), })), ))
def __init__(self, job): super(Evaluator, self).__init__(evaluators=( evaluators.TaskPayloadLiftingEvaluator(), evaluators.FilteringEvaluator( predicate=evaluators.All( evaluators.TaskTypeEq('run_test'), evaluators.TaskIsEventTarget(), ), delegate=evaluators.DispatchByEventTypeEvaluator({ 'initiate': evaluators.FilteringEvaluator(predicate=evaluators.Not( evaluators.TaskStatusIn( {'ongoing', 'failed', 'completed'})), delegate=InitiateEvaluator( job)), 'update': evaluators.FilteringEvaluator( predicate=evaluators.TaskStatusIn({'ongoing'}), delegate=UpdateEvaluator(job)), })), ))