示例#1
0
    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))
示例#2
0
 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(),
     ))
示例#3
0
  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))
示例#4
0
 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),
               })),
       ))
示例#5
0
 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)),
             })),
     ))