# HG changeset patch # User Sandro Knauß # Date 1328808478 -3600 # Node ID 90c95fdd1e3326e6c64fef8f32e78c9250380151 # Parent 75d0eaaa871d8c0f534b68ee5a1dfb6038664b93 first defer test in job management diff -r 75d0eaaa871d -r 90c95fdd1e33 iro/controller/pool.py --- a/iro/controller/pool.py Thu Feb 09 17:36:31 2012 +0100 +++ b/iro/controller/pool.py Thu Feb 09 18:27:58 2012 +0100 @@ -29,4 +29,3 @@ '''starting all pools''' for pool in pools: pool.start(reactor) - diff -r 75d0eaaa871d -r 90c95fdd1e33 iro/controller/task.py --- a/iro/controller/task.py Thu Feb 09 17:36:31 2012 +0100 +++ b/iro/controller/task.py Thu Feb 09 18:27:58 2012 +0100 @@ -1,5 +1,7 @@ from functools import partial +from twisted.internet import defer + from ..error import NoRoute, RejectRecipient from ..model.offer import getPossibleOffers @@ -32,10 +34,12 @@ def createJob(user,recipients, msg, offers, info=None): - job = exJobs.create(user, recipients, msg, offers, info) - for r in recipients: - task = Task(r,job) - job.addTask(task) - task.start() - - return job + d = defer.maybeDeferred(exJobs.create,user, recipients, msg, offers, info) + def _(job): + for r in recipients: + task = Task(r,job) + job.addTask(task) + task.start() + return job + d.addCallback(_) + return d diff -r 75d0eaaa871d -r 90c95fdd1e33 tests/dbtestcase.py --- a/tests/dbtestcase.py Thu Feb 09 17:36:31 2012 +0100 +++ b/tests/dbtestcase.py Thu Feb 09 18:27:58 2012 +0100 @@ -7,7 +7,7 @@ import atexit from ngdatabase.mysql import Server, createConfig, Database -from iro.model import schema, setEngine +from iro.model import schema, setEngine, setPool from iro.model.utils import WithSession from iro.model.schema import Base @@ -68,6 +68,7 @@ self.db.create() Base.metadata.create_all(self.engine) setEngine(self.engine) + setPool(dbPool) self.vaild = True diff -r 75d0eaaa871d -r 90c95fdd1e33 tests/job.py --- a/tests/job.py Thu Feb 09 17:36:31 2012 +0100 +++ b/tests/job.py Thu Feb 09 18:27:58 2012 +0100 @@ -1,8 +1,9 @@ -import unittest +from twisted.internet import reactor + from Queue import deque from iro.controller.task import createJob, Task -from iro.controller.pool import taskPool +from iro.controller.pool import taskPool, dbPool from iro.model.job import exJobs, ExJob @@ -14,11 +15,8 @@ from iro.validate import vInteger - from .dbtestcase import DBTestCase -#activates all logging we can get. - class DumpPool(): def run(self, f,*a,**k): return f(*a,**k) @@ -90,13 +88,11 @@ def setUp(self): DBTestCase.setUp(self) - self.pool = data.pool - data.pool = DumpPool() + dbPool.start(reactor) def tearDown(self): exJobs.clear() - data.pool = self.pool - self.pool = None + dbPool.pool.stop() taskPool.pool.q.queue = deque() DBTestCase.tearDown(self) @@ -104,27 +100,36 @@ with self.session() as session: u = User(name='test',apikey='abcdef123456789') session.add(u) - exjob = createJob(u,[Telnumber('0123325456')],SMS('sms'),[]) - self.assertEqual(taskPool.pool.q.qsize(),1) - self.assertEqual(exjob.tasks.keys(),[Telnumber('0123325456')]) - self.assertIsInstance(exjob.tasks[Telnumber('0123325456')], Task) + + d = createJob(u,[Telnumber('0123325456')],SMS('sms'),[]) + + def poolsize(result): + self.assertEqual(taskPool.pool.q.qsize(),1) + return result + d.addCallback(poolsize) + def keys(result): + self.assertEqual(result.tasks.keys(),[Telnumber('0123325456')]) + return result + d.addCallback(keys) + def tasktest(result): + self.assertIsInstance(result.tasks[Telnumber('0123325456')], Task) + return result + d.addCallback(tasktest) - def testCreateFax(self): - with self.session() as session: - u = User(name='test',apikey='abcdef123456789') - session.add(u) - job = createJob(u,[Telnumber('0123325456')],Fax('header','fax',[]),[]) + return d - self.assertEqual(taskPool.pool.q.qsize(),1) + #def testCreateFax(self): + # with self.session() as session: + # u = User(name='test',apikey='abcdef123456789') + # session.add(u) + # job = createJob(u,[Telnumber('0123325456')],Fax('header','fax',[]),[]) - def testCreateMail(self): - with self.session() as session: - u = User(name='test',apikey='abcdef123456789') - session.add(u) - job = createJob(u,[],Mail('sub','body','t@t.de'),[]) - + # self.assertEqual(taskPool.pool.q.qsize(),1) -if __name__ == '__main__': - unittest.main() + #def testCreateMail(self): + # with self.session() as session: + # u = User(name='test',apikey='abcdef123456789') + # session.add(u) + # job = createJob(u,[],Mail('sub','body','t@t.de'),[])