# HG changeset patch # User Sandro Knauß # Date 1286332314 -7200 # Node ID 1a9f191389a44e5b0ce5708f74c25a222ece468f # Parent 02e9b54ef4f00a9a5feccdf0a5fde20bde49ac26 test mit fehlschlagendem Job job ->setStatus damit das threadsafe gesetzt werden kann ->getStatus gibt nun kein leeres Dict mehr zurück diff -r 02e9b54ef4f0 -r 1a9f191389a4 iro/job.py --- a/iro/job.py Wed Oct 06 04:28:19 2010 +0200 +++ b/iro/job.py Wed Oct 06 04:31:54 2010 +0200 @@ -32,11 +32,14 @@ def stop(self): self.status = "stopped" - def getStatus(self,detailed): + def getStatus(self,detailed=False): if detailed and self.status == "started" or self.status == "sended": return self.status, self.dStatus - return self.status, {} + return self.status + def setStatus(self,status): + self.status=status + def getName(self): return self.name diff -r 02e9b54ef4f0 -r 1a9f191389a4 iro/tests/testWorker.py --- a/iro/tests/testWorker.py Wed Oct 06 04:28:19 2010 +0200 +++ b/iro/tests/testWorker.py Wed Oct 06 04:31:54 2010 +0200 @@ -32,9 +32,17 @@ record.exc_info=record.exc_info[:-1] self.buffer.append(record.__dict__) + +class BadJob(Job): + def start(self): + Job.start(self) + raise Exception("Error") + +#einen Manager anlegen, der Job und eine Liste anbietet class MyManager(BaseManager): pass MyManager.register('Job', Job) +MyManager.register('BadJob', BadJob) MyManager.register('list', list, ListProxy) class TestWorker(unittest.TestCase): @@ -99,6 +107,24 @@ (20,'ein neuer Job(1)'), (20,'Job(1) fertig ;)')]) + def testBadJob(self): + '''einen Job verarbeiten, der fehlschlägt''' + job=self.manager.BadJob(None,None,"test") + self.assertEqual(job.getStatus(),"init") + self.queue.put(job) + sleep(.1) + self.stop() + self.assertEqual(job.getStatus(),"error") + print self.buffer + self.assertEqual([(l['levelno'],l['msg']) for l in self.buffer if l['name']=="iro.worker"], + [(20,'Workerprocess läuft nun...'), + (20,'ein neuer Job(1)'), + (40,'Job(1) fehlgeschlagen :(')]) + error=Exception('Error') + self.assertEqual(self.buffer[-1]['exc_info'][0],type(error)) + self.assertEqual(str(self.buffer[-1]['exc_info'][1]),str(error)) + + if __name__ == "__main__": unittest.main() diff -r 02e9b54ef4f0 -r 1a9f191389a4 iro/worker.py --- a/iro/worker.py Wed Oct 06 04:28:19 2010 +0200 +++ b/iro/worker.py Wed Oct 06 04:31:54 2010 +0200 @@ -21,7 +21,8 @@ logger.info('ein neuer Job(%d)' %(id)) try: job.start() - logger.info('Job(%d) fertig ;)'%(id)) except: + job.setStatus("error") logger.exception('Job(%d) fehlgeschlagen :('%(id)) +