Пример #1
0
 def test_task_manager_fail(self):
   tm = TaskManager( num_threads = 4 )
   
   num_of_tasks = 100
   
   for i in range(num_of_tasks):
     tm.addTask( i, _doFail, 0.0 )
   
   time.sleep(1) # wait until all tasks are done
   
   done_tasks = tm.finishedTasks()
   
   self.assertEqual( len(done_tasks), num_of_tasks )
   
   for i, t in enumerate( sorted(done_tasks) ):
     self.assertEqual( t.task_id, i )
     self.assertIsNotNone( t.error )
Пример #2
0
 def test_task_manager(self):
   tm = TaskManager( 4 )
   
   results = set()
   
   num_of_tasks = 8
   
   for i in range(0,num_of_tasks):
     tm.addTask( i, _doAppend, i, results )
   
   time.sleep(0.5) # wait until all tasks are done
   
   done_tasks = tm.finishedTasks()
   expected_tasks = [ TaskResult( task_id ) for task_id in range(num_of_tasks) ]
   
   self.assertEqual( sorted(expected_tasks), expected_tasks )
   self.assertEqual( results, set(range(num_of_tasks)) )
Пример #3
0
 def test_task_manager_finish(self):
   tm = TaskManager( 1 )
   
   results = set()
   
   num_tasks = 8
   
   for i in range(num_tasks):
     tm.addTask( i, _doAppend, i, results, 0.2 )
   
   tm.finish()
   
   for i in range(num_tasks, num_tasks * 2):
     tm.addTask( i, _doAppend, i, results, 0.2 )
   
   self.assertEqual( results, set(range(num_tasks)) )
   
   done_tasks = tm.finishedTasks()
   expected_tasks = [ TaskResult( task_id ) for task_id in range(num_tasks) ] 
   
   self.assertEqual( sorted(done_tasks), expected_tasks )
Пример #4
0
  def test_task_manager_stop_on_fail(self):
    tm = TaskManager( 4, stop_on_fail = True )
    
    results = set()
    
    num_tasks = 8
    
    for i in range(3):
      tm.addTask( i, _doAppend, i, results, 0.3 )
    
    tm.addTask( i + 1, _doFail, 0.1 )
    
    for i in range(i + 2,num_tasks):
      tm.addTask( i, _doAppend, i, results, 0 )
    
    time.sleep(1)
    
    done_tasks = sorted( tm.finishedTasks(), key=lambda t: t.task_id )
    self.assertEqual( len(done_tasks), 4 )
    
    expected_tasks = [ TaskResult( task_id, error, result ) \
                       for task_id, error, result in zip(range(4), [None] * num_tasks, [None] * num_tasks ) ] 

    self.assertEqual( done_tasks[:3], expected_tasks[:3] )
    
    self.assertEqual( done_tasks[3].task_id, 3 )
    self.assertIsNotNone( done_tasks[3].error )
Пример #5
0
 def test_task_manager_one_fail(self):
   tm = TaskManager( 4 )
   
   results = set()
   
   num_tasks = 3
   
   tm.addTask( 0, _doAppend, 0, results, 0.3 )
   
   tm.addTask( 1, _doFail, 0.1 )
   
   tm.addTask( 2, _doAppend, 2, results, 0 )
   
   time.sleep(1)
   
   done_tasks = sorted( tm.finishedTasks(), key= lambda v: v.task_id )
   self.assertEqual( len(done_tasks), num_tasks )
   
   expected_tasks = [ TaskResult( task_id, error, result ) \
                      for task_id, error, result in zip(range(num_tasks), [None] * num_tasks, [None] * num_tasks ) ] 
   
   self.assertEqual( done_tasks[0], expected_tasks[0] )
   
   self.assertEqual( done_tasks[1].task_id, 1 )
   self.assertIsNotNone( done_tasks[1].error )
   
   self.assertEqual( done_tasks[2], expected_tasks[2] )
Пример #6
0
 def test_task_manager_stop(self):
   
   jobs = 4
   num_tasks = 8
   
   tm = TaskManager( num_threads = jobs )
   
   results = set()
   
   for i in range(num_tasks):
     tm.addTask( i, _doAppend, i, results, 1 )
   
   time.sleep(0.2)
   
   tm.stop()
   tm.stop()
   
   done_tasks = sorted( tm.finishedTasks(), key = lambda result: result.task_id )
   
   expected_tasks = [ TaskResult( task_id ) for task_id in range(jobs) ]
   
   self.assertEqual( sorted(done_tasks), expected_tasks )
   self.assertEqual( results, set(range(jobs)) )