tests/task.py
author Sandro Knauß <knauss@netzguerilla.net>
Sat, 10 Mar 2012 19:01:31 +0100
branchdevel
changeset 220 602720314930
parent 217 d755b2e0cc0b
permissions -rw-r--r--
adding config.Config.sampleConf for creating a sample configuration
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
175
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     1
from twisted.internet import reactor
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     2
from twisted.internet.defer import inlineCallbacks
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     3
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     4
from Queue import deque
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     5
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     6
from iro.model.schema import User, Offer as DBOffer, Userright
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     7
from iro.model.message import SMS
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     8
from iro.model.status import Status
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     9
from iro.model.offer import offers
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    10
from iro.model.job import exJobs
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    11
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    12
from iro.controller.task import createJob, Task
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    13
from iro.controller.pool  import taskPool, dbPool
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    14
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    15
from iro.offer import Offer, Provider
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    16
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    17
from iro.error import NoRouteForTask
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    18
from iro.telnumber import Telnumber
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    19
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    20
from .dbtestcase import DBTestCase
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    21
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    22
class TaskTestCase(DBTestCase):
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    23
    def setUp(self):
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    24
        DBTestCase.setUp(self)
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    25
        dbPool.start(reactor)
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    26
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    27
    def tearDown(self):
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    28
        exJobs.clear()
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    29
        offers.clear()
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    30
        dbPool.pool.stop()
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    31
        taskPool.pool.q.queue = deque()
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    32
        DBTestCase.tearDown(self)
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    33
 
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    34
class TestTasks(TaskTestCase):
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    35
   
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    36
    @inlineCallbacks
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    37
    def testCreateSMS(self):
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    38
        with self.session() as session:
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    39
            u = User(name='test',apikey='abcdef123456789')
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    40
            session.add(u)
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    41
        
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    42
        job = yield createJob(u,[Telnumber('0123325456')],SMS('sms'),[])
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    43
        
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    44
        self.assertEqual(taskPool.pool.q.qsize(),1)
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    45
        
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    46
        self.assertEqual(job.tasks.keys(),[Telnumber('0123325456')])
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    47
        self.assertIsInstance(job.tasks[Telnumber('0123325456')], Task)
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    48
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    49
    @inlineCallbacks
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    50
    def testRun(self):
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    51
        with self.session() as session:
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    52
            u = User(name='test',apikey='abcdef123456789')
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    53
            session.add(u)
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    54
            o=DBOffer(name="test", provider="bla", route="basic", typ="sms")
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    55
            u.rights.append(Userright(o)) 
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    56
        
186
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 175
diff changeset
    57
        p=Provider(name="p", typs={"sms":["test",]})
175
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    58
        def send(typ,route,recipient,message):
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    59
            return Status(provider=p, route=route)
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    60
        p.send=send
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    61
        offers["test"] = Offer("test",provider=p, route="test", typ="sms")
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    62
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    63
        exjob = yield exJobs.create(u, [Telnumber('123456789')], SMS('test'), ['test'])
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    64
        
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    65
        task=Task(Telnumber('123456789'), exjob)
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    66
        ret = yield task._run()
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    67
        self.assertIsInstance(ret, Status)
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    68
        self.assertEqual(ret.provider, p)
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    69
        self.assertEqual(ret.route, "test")
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    70
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    71
    @inlineCallbacks
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    72
    def testNoRoute(self):
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    73
        with self.session() as session:
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    74
            u = User(name='test',apikey='abcdef123456789')
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    75
            session.add(u)
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    76
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    77
        exjob = yield exJobs.create(u, [Telnumber('123456789')], SMS('test'), [])
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    78
        
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    79
        task=Task(Telnumber('123456789'), exjob)
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    80
        d = task._run()
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    81
        self.assertFailure(d, NoRouteForTask)
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    82
217
d755b2e0cc0b task now saves own status
Sandro Knauß <knauss@netzguerilla.net>
parents: 186
diff changeset
    83
    def testSetStatus(self):
d755b2e0cc0b task now saves own status
Sandro Knauß <knauss@netzguerilla.net>
parents: 186
diff changeset
    84
        task=Task(Telnumber('123456789'), None)
d755b2e0cc0b task now saves own status
Sandro Knauß <knauss@netzguerilla.net>
parents: 186
diff changeset
    85
        self.assertEqual(task.status,None)
d755b2e0cc0b task now saves own status
Sandro Knauß <knauss@netzguerilla.net>
parents: 186
diff changeset
    86
        self.assertEqual(task.error,False)
175
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    87
217
d755b2e0cc0b task now saves own status
Sandro Knauß <knauss@netzguerilla.net>
parents: 186
diff changeset
    88
        self.assertEqual(task.setStatus("fooja"),"fooja")
d755b2e0cc0b task now saves own status
Sandro Knauß <knauss@netzguerilla.net>
parents: 186
diff changeset
    89
        self.assertEqual(task.status,"fooja")
175
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    90
217
d755b2e0cc0b task now saves own status
Sandro Knauß <knauss@netzguerilla.net>
parents: 186
diff changeset
    91
    def testSetError(self):
d755b2e0cc0b task now saves own status
Sandro Knauß <knauss@netzguerilla.net>
parents: 186
diff changeset
    92
        task=Task(Telnumber('123456789'), None)
d755b2e0cc0b task now saves own status
Sandro Knauß <knauss@netzguerilla.net>
parents: 186
diff changeset
    93
        self.assertEqual(task.setError("fooja"),"fooja")
d755b2e0cc0b task now saves own status
Sandro Knauß <knauss@netzguerilla.net>
parents: 186
diff changeset
    94
        self.assertEqual(task.status,"fooja")
d755b2e0cc0b task now saves own status
Sandro Knauß <knauss@netzguerilla.net>
parents: 186
diff changeset
    95
        self.assertEqual(task.error,True)