first defer test in job management devel
authorSandro Knauß <knauss@netzguerilla.net>
Thu, 09 Feb 2012 18:27:58 +0100
branchdevel
changeset 141 90c95fdd1e33
parent 140 75d0eaaa871d
child 142 7d0c1fa97123
first defer test in job management
iro/controller/pool.py
iro/controller/task.py
tests/dbtestcase.py
tests/job.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)
-
--- 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
--- 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
     
 
--- 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'),[])