iro/tests/testWorker.py
changeset 42 1a9f191389a4
parent 41 02e9b54ef4f0
child 48 32763e344d3b
equal deleted inserted replaced
41:02e9b54ef4f0 42:1a9f191389a4
    30         if record.exc_info:                                                      #sonst geht das append schief, weil nicht picklebar
    30         if record.exc_info:                                                      #sonst geht das append schief, weil nicht picklebar
    31             print record.exc_info
    31             print record.exc_info
    32             record.exc_info=record.exc_info[:-1]                                              
    32             record.exc_info=record.exc_info[:-1]                                              
    33         self.buffer.append(record.__dict__)
    33         self.buffer.append(record.__dict__)
    34 
    34 
       
    35 
       
    36 class BadJob(Job):
       
    37     def start(self):
       
    38         Job.start(self)
       
    39         raise Exception("Error")
       
    40 
       
    41 #einen Manager anlegen, der Job und eine Liste anbietet
    35 class MyManager(BaseManager):
    42 class MyManager(BaseManager):
    36     pass
    43     pass
    37 MyManager.register('Job', Job) 
    44 MyManager.register('Job', Job) 
       
    45 MyManager.register('BadJob', BadJob) 
    38 MyManager.register('list', list, ListProxy)
    46 MyManager.register('list', list, ListProxy)
    39 
    47 
    40 class TestWorker(unittest.TestCase):
    48 class TestWorker(unittest.TestCase):
    41     def setUp(self):
    49     def setUp(self):
    42         #erstelle eine Queue&Manager
    50         #erstelle eine Queue&Manager
    97         self.assertEqual([(l['levelno'],l['msg']) for l in self.buffer if l['name']=="iro.worker"],
   105         self.assertEqual([(l['levelno'],l['msg']) for l in self.buffer if l['name']=="iro.worker"],
    98                 [(20,'Workerprocess läuft nun...'),
   106                 [(20,'Workerprocess läuft nun...'),
    99                  (20,'ein neuer Job(1)'),
   107                  (20,'ein neuer Job(1)'),
   100                  (20,'Job(1) fertig ;)')])
   108                  (20,'Job(1) fertig ;)')])
   101 
   109 
       
   110     def testBadJob(self):
       
   111         '''einen Job verarbeiten, der fehlschlägt'''
       
   112         job=self.manager.BadJob(None,None,"test")
       
   113         self.assertEqual(job.getStatus(),"init")
       
   114         self.queue.put(job)
       
   115         sleep(.1)
       
   116         self.stop()
       
   117         self.assertEqual(job.getStatus(),"error")
       
   118         print self.buffer
       
   119         self.assertEqual([(l['levelno'],l['msg']) for l in self.buffer if l['name']=="iro.worker"],
       
   120                 [(20,'Workerprocess läuft nun...'),
       
   121                  (20,'ein neuer Job(1)'),
       
   122                  (40,'Job(1) fehlgeschlagen :(')])
       
   123         error=Exception('Error')
       
   124         self.assertEqual(self.buffer[-1]['exc_info'][0],type(error))
       
   125         self.assertEqual(str(self.buffer[-1]['exc_info'][1]),str(error))
       
   126 
       
   127 
   102 
   128 
   103 if __name__ == "__main__":
   129 if __name__ == "__main__":
   104     unittest.main()  
   130     unittest.main()