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() |