| author | Sandro Knauß <knauss@netzguerilla.net> |
| Fri, 10 Feb 2012 20:47:57 +0100 | |
| branch | devel |
| changeset 142 | 7d0c1fa97123 |
| parent 141 | 90c95fdd1e33 |
| child 143 | 0b265608b6ce |
| permissions | -rw-r--r-- |
|
141
90c95fdd1e33
first defer test in job management
Sandro Knauß <knauss@netzguerilla.net>
parents:
140
diff
changeset
|
1 |
from twisted.internet import reactor |
|
142
7d0c1fa97123
task._run umbau zu inlineCallbacks
Sandro Knauß <knauss@netzguerilla.net>
parents:
141
diff
changeset
|
2 |
from twisted.internet.defer import inlineCallbacks |
|
141
90c95fdd1e33
first defer test in job management
Sandro Knauß <knauss@netzguerilla.net>
parents:
140
diff
changeset
|
3 |
|
|
140
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
4 |
from Queue import deque |
| 135 | 5 |
|
|
140
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
6 |
from iro.controller.task import createJob, Task |
|
141
90c95fdd1e33
first defer test in job management
Sandro Knauß <knauss@netzguerilla.net>
parents:
140
diff
changeset
|
7 |
from iro.controller.pool import taskPool, dbPool |
| 135 | 8 |
|
|
142
7d0c1fa97123
task._run umbau zu inlineCallbacks
Sandro Knauß <knauss@netzguerilla.net>
parents:
141
diff
changeset
|
9 |
from iro.model.job import exJobs, ExJob, Status |
| 135 | 10 |
|
11 |
from iro.model.pool import data |
|
12 |
||
13 |
from iro.model.message import SMS, Fax, Mail |
|
|
140
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
14 |
from iro.model.schema import Job, User |
| 135 | 15 |
from iro.telnumber import Telnumber |
16 |
||
|
140
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
17 |
from iro.validate import vInteger |
|
142
7d0c1fa97123
task._run umbau zu inlineCallbacks
Sandro Knauß <knauss@netzguerilla.net>
parents:
141
diff
changeset
|
18 |
from iro.error import NoRoute |
| 135 | 19 |
|
|
140
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
20 |
from .dbtestcase import DBTestCase |
| 135 | 21 |
|
22 |
class DumpPool(): |
|
23 |
def run(self, f,*a,**k): |
|
24 |
return f(*a,**k) |
|
25 |
||
26 |
||
|
140
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
27 |
class exJobsTest(DBTestCase): |
|
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
28 |
'''tests for exJobs''' |
| 135 | 29 |
|
|
140
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
30 |
def setUp(self): |
|
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
31 |
DBTestCase.setUp(self) |
|
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
32 |
self.pool = data.pool |
|
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
33 |
data.pool = DumpPool() |
| 135 | 34 |
|
35 |
def tearDown(self): |
|
|
140
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
36 |
exJobs.clear() |
|
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
37 |
data.pool = self.pool |
|
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
38 |
self.pool = None |
| 135 | 39 |
DBTestCase.tearDown(self) |
40 |
||
41 |
def testCreate(self): |
|
42 |
with self.session() as session: |
|
43 |
u = User(name='test',apikey='abcdef123456789') |
|
44 |
session.add(u) |
|
45 |
||
|
140
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
46 |
job = exJobs.create(u, [Telnumber('123456789')], SMS('test'), ['test']) |
|
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
47 |
self.assertIsInstance(job, ExJob) |
|
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
48 |
self.assertTrue(vInteger(job.dbjob, None, minv=0 )) |
|
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
49 |
self.assertEqual(job.message, SMS('test')) |
|
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
50 |
self.assertEqual(job.recipients, [Telnumber('123456789')]) |
|
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
51 |
self.assertEqual(job.offers,['test']) |
|
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
52 |
self.assertEqual(job.tasks,{}) |
| 135 | 53 |
|
54 |
with self.session() as session: |
|
|
140
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
55 |
j = session.query(Job.id).all() |
|
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
56 |
self.assertEqual(j,[(job.dbjob,)]) |
| 135 | 57 |
|
|
140
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
58 |
self.assertEqual(exJobs[job.dbjob],job) |
| 135 | 59 |
|
60 |
def testGet(self): |
|
61 |
with self.session() as session: |
|
62 |
u = User(name='test',apikey='abcdef123456789') |
|
63 |
session.add(u) |
|
64 |
||
|
140
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
65 |
job = ExJob(None, [Telnumber('123456789')], SMS('test'), ['test']) |
|
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
66 |
exJobs[1] = job |
| 135 | 67 |
|
|
140
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
68 |
self.assertEqual(len(exJobs), 1) |
|
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
69 |
self.assertEqual(job, exJobs[1]) |
| 135 | 70 |
|
71 |
def testGetFromDB(self): |
|
72 |
with self.session() as session: |
|
73 |
u = User(name='test',apikey='abcdef123456789') |
|
|
140
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
74 |
job = Job( info="info", status="started") |
| 135 | 75 |
u.jobs.append(job) |
76 |
session.add(u) |
|
77 |
||
78 |
with self.session() as session: |
|
79 |
job = session.merge(job) |
|
80 |
u = session.merge(u) |
|
|
140
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
81 |
ejob= ExJob(job.id, [Telnumber('123456789')], SMS('test'), ['test']) |
|
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
82 |
exJobs[job.id]=ejob |
|
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
83 |
self.assertEqual(job.extend, ejob) |
|
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
84 |
self.assertEqual(u.jobs[0].extend,ejob) |
| 135 | 85 |
|
|
140
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
86 |
def testUnknownExJob(self): |
|
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
87 |
self.assertRaises(KeyError,exJobs.__getitem__,'a1234567890') |
| 135 | 88 |
|
|
142
7d0c1fa97123
task._run umbau zu inlineCallbacks
Sandro Knauß <knauss@netzguerilla.net>
parents:
141
diff
changeset
|
89 |
class TestTasks(DBTestCase): |
|
140
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
90 |
|
|
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
91 |
def setUp(self): |
|
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
92 |
DBTestCase.setUp(self) |
|
141
90c95fdd1e33
first defer test in job management
Sandro Knauß <knauss@netzguerilla.net>
parents:
140
diff
changeset
|
93 |
dbPool.start(reactor) |
|
140
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
94 |
|
|
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
95 |
def tearDown(self): |
|
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
96 |
exJobs.clear() |
|
141
90c95fdd1e33
first defer test in job management
Sandro Knauß <knauss@netzguerilla.net>
parents:
140
diff
changeset
|
97 |
dbPool.pool.stop() |
|
140
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
98 |
taskPool.pool.q.queue = deque() |
|
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
99 |
DBTestCase.tearDown(self) |
|
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
100 |
|
| 135 | 101 |
def testCreateSMS(self): |
|
140
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
102 |
with self.session() as session: |
|
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
103 |
u = User(name='test',apikey='abcdef123456789') |
|
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
104 |
session.add(u) |
|
141
90c95fdd1e33
first defer test in job management
Sandro Knauß <knauss@netzguerilla.net>
parents:
140
diff
changeset
|
105 |
|
|
90c95fdd1e33
first defer test in job management
Sandro Knauß <knauss@netzguerilla.net>
parents:
140
diff
changeset
|
106 |
d = createJob(u,[Telnumber('0123325456')],SMS('sms'),[]) |
|
90c95fdd1e33
first defer test in job management
Sandro Knauß <knauss@netzguerilla.net>
parents:
140
diff
changeset
|
107 |
|
|
90c95fdd1e33
first defer test in job management
Sandro Knauß <knauss@netzguerilla.net>
parents:
140
diff
changeset
|
108 |
def poolsize(result): |
|
90c95fdd1e33
first defer test in job management
Sandro Knauß <knauss@netzguerilla.net>
parents:
140
diff
changeset
|
109 |
self.assertEqual(taskPool.pool.q.qsize(),1) |
|
90c95fdd1e33
first defer test in job management
Sandro Knauß <knauss@netzguerilla.net>
parents:
140
diff
changeset
|
110 |
return result |
|
90c95fdd1e33
first defer test in job management
Sandro Knauß <knauss@netzguerilla.net>
parents:
140
diff
changeset
|
111 |
d.addCallback(poolsize) |
|
142
7d0c1fa97123
task._run umbau zu inlineCallbacks
Sandro Knauß <knauss@netzguerilla.net>
parents:
141
diff
changeset
|
112 |
|
|
141
90c95fdd1e33
first defer test in job management
Sandro Knauß <knauss@netzguerilla.net>
parents:
140
diff
changeset
|
113 |
def keys(result): |
|
90c95fdd1e33
first defer test in job management
Sandro Knauß <knauss@netzguerilla.net>
parents:
140
diff
changeset
|
114 |
self.assertEqual(result.tasks.keys(),[Telnumber('0123325456')]) |
|
90c95fdd1e33
first defer test in job management
Sandro Knauß <knauss@netzguerilla.net>
parents:
140
diff
changeset
|
115 |
return result |
|
90c95fdd1e33
first defer test in job management
Sandro Knauß <knauss@netzguerilla.net>
parents:
140
diff
changeset
|
116 |
d.addCallback(keys) |
|
142
7d0c1fa97123
task._run umbau zu inlineCallbacks
Sandro Knauß <knauss@netzguerilla.net>
parents:
141
diff
changeset
|
117 |
return d |
|
7d0c1fa97123
task._run umbau zu inlineCallbacks
Sandro Knauß <knauss@netzguerilla.net>
parents:
141
diff
changeset
|
118 |
@inlineCallbacks |
|
7d0c1fa97123
task._run umbau zu inlineCallbacks
Sandro Knauß <knauss@netzguerilla.net>
parents:
141
diff
changeset
|
119 |
def testRun(self): |
|
7d0c1fa97123
task._run umbau zu inlineCallbacks
Sandro Knauß <knauss@netzguerilla.net>
parents:
141
diff
changeset
|
120 |
with self.session() as session: |
|
7d0c1fa97123
task._run umbau zu inlineCallbacks
Sandro Knauß <knauss@netzguerilla.net>
parents:
141
diff
changeset
|
121 |
u = User(name='test',apikey='abcdef123456789') |
|
7d0c1fa97123
task._run umbau zu inlineCallbacks
Sandro Knauß <knauss@netzguerilla.net>
parents:
141
diff
changeset
|
122 |
session.add(u) |
|
7d0c1fa97123
task._run umbau zu inlineCallbacks
Sandro Knauß <knauss@netzguerilla.net>
parents:
141
diff
changeset
|
123 |
|
|
141
90c95fdd1e33
first defer test in job management
Sandro Knauß <knauss@netzguerilla.net>
parents:
140
diff
changeset
|
124 |
def tasktest(result): |
|
90c95fdd1e33
first defer test in job management
Sandro Knauß <knauss@netzguerilla.net>
parents:
140
diff
changeset
|
125 |
self.assertIsInstance(result.tasks[Telnumber('0123325456')], Task) |
|
90c95fdd1e33
first defer test in job management
Sandro Knauß <knauss@netzguerilla.net>
parents:
140
diff
changeset
|
126 |
return result |
|
90c95fdd1e33
first defer test in job management
Sandro Knauß <knauss@netzguerilla.net>
parents:
140
diff
changeset
|
127 |
d.addCallback(tasktest) |
|
140
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
128 |
|
|
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
129 |
|
| 135 | 130 |
|
|
142
7d0c1fa97123
task._run umbau zu inlineCallbacks
Sandro Knauß <knauss@netzguerilla.net>
parents:
141
diff
changeset
|
131 |
exjob = yield exJobs.create(u, [Telnumber('123456789')], SMS('test'), ['test']) |
|
7d0c1fa97123
task._run umbau zu inlineCallbacks
Sandro Knauß <knauss@netzguerilla.net>
parents:
141
diff
changeset
|
132 |
|
|
7d0c1fa97123
task._run umbau zu inlineCallbacks
Sandro Knauß <knauss@netzguerilla.net>
parents:
141
diff
changeset
|
133 |
task=Task(Telnumber('123456789'), exjob) |
|
7d0c1fa97123
task._run umbau zu inlineCallbacks
Sandro Knauß <knauss@netzguerilla.net>
parents:
141
diff
changeset
|
134 |
ret = yield task._run() |
|
7d0c1fa97123
task._run umbau zu inlineCallbacks
Sandro Knauß <knauss@netzguerilla.net>
parents:
141
diff
changeset
|
135 |
self.assertIsInstance(ret, Status) |
|
7d0c1fa97123
task._run umbau zu inlineCallbacks
Sandro Knauß <knauss@netzguerilla.net>
parents:
141
diff
changeset
|
136 |
self.assertEqual(ret.offer,"test") |
|
7d0c1fa97123
task._run umbau zu inlineCallbacks
Sandro Knauß <knauss@netzguerilla.net>
parents:
141
diff
changeset
|
137 |
self.assertEqual(ret.status, Status.error) |
|
7d0c1fa97123
task._run umbau zu inlineCallbacks
Sandro Knauß <knauss@netzguerilla.net>
parents:
141
diff
changeset
|
138 |
self.assertEqual(ret.errtext,"Error: Test") |
|
7d0c1fa97123
task._run umbau zu inlineCallbacks
Sandro Knauß <knauss@netzguerilla.net>
parents:
141
diff
changeset
|
139 |
|
|
7d0c1fa97123
task._run umbau zu inlineCallbacks
Sandro Knauß <knauss@netzguerilla.net>
parents:
141
diff
changeset
|
140 |
@inlineCallbacks |
|
7d0c1fa97123
task._run umbau zu inlineCallbacks
Sandro Knauß <knauss@netzguerilla.net>
parents:
141
diff
changeset
|
141 |
def testNoRoute(self): |
|
7d0c1fa97123
task._run umbau zu inlineCallbacks
Sandro Knauß <knauss@netzguerilla.net>
parents:
141
diff
changeset
|
142 |
with self.session() as session: |
|
7d0c1fa97123
task._run umbau zu inlineCallbacks
Sandro Knauß <knauss@netzguerilla.net>
parents:
141
diff
changeset
|
143 |
u = User(name='test',apikey='abcdef123456789') |
|
7d0c1fa97123
task._run umbau zu inlineCallbacks
Sandro Knauß <knauss@netzguerilla.net>
parents:
141
diff
changeset
|
144 |
session.add(u) |
|
7d0c1fa97123
task._run umbau zu inlineCallbacks
Sandro Knauß <knauss@netzguerilla.net>
parents:
141
diff
changeset
|
145 |
|
|
7d0c1fa97123
task._run umbau zu inlineCallbacks
Sandro Knauß <knauss@netzguerilla.net>
parents:
141
diff
changeset
|
146 |
exjob = yield exJobs.create(u, [Telnumber('123456789')], SMS('test'), []) |
|
7d0c1fa97123
task._run umbau zu inlineCallbacks
Sandro Knauß <knauss@netzguerilla.net>
parents:
141
diff
changeset
|
147 |
|
|
7d0c1fa97123
task._run umbau zu inlineCallbacks
Sandro Knauß <knauss@netzguerilla.net>
parents:
141
diff
changeset
|
148 |
task=Task(Telnumber('123456789'), exjob) |
|
7d0c1fa97123
task._run umbau zu inlineCallbacks
Sandro Knauß <knauss@netzguerilla.net>
parents:
141
diff
changeset
|
149 |
d = task._run() |
|
7d0c1fa97123
task._run umbau zu inlineCallbacks
Sandro Knauß <knauss@netzguerilla.net>
parents:
141
diff
changeset
|
150 |
self.assertFailure(d, NoRoute) |
|
7d0c1fa97123
task._run umbau zu inlineCallbacks
Sandro Knauß <knauss@netzguerilla.net>
parents:
141
diff
changeset
|
151 |
|
|
140
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
152 |
|
|
141
90c95fdd1e33
first defer test in job management
Sandro Knauß <knauss@netzguerilla.net>
parents:
140
diff
changeset
|
153 |
#def testCreateFax(self): |
|
90c95fdd1e33
first defer test in job management
Sandro Knauß <knauss@netzguerilla.net>
parents:
140
diff
changeset
|
154 |
# with self.session() as session: |
|
90c95fdd1e33
first defer test in job management
Sandro Knauß <knauss@netzguerilla.net>
parents:
140
diff
changeset
|
155 |
# u = User(name='test',apikey='abcdef123456789') |
|
90c95fdd1e33
first defer test in job management
Sandro Knauß <knauss@netzguerilla.net>
parents:
140
diff
changeset
|
156 |
# session.add(u) |
|
90c95fdd1e33
first defer test in job management
Sandro Knauß <knauss@netzguerilla.net>
parents:
140
diff
changeset
|
157 |
# job = createJob(u,[Telnumber('0123325456')],Fax('header','fax',[]),[]) |
| 135 | 158 |
|
|
141
90c95fdd1e33
first defer test in job management
Sandro Knauß <knauss@netzguerilla.net>
parents:
140
diff
changeset
|
159 |
# self.assertEqual(taskPool.pool.q.qsize(),1) |
| 135 | 160 |
|
|
141
90c95fdd1e33
first defer test in job management
Sandro Knauß <knauss@netzguerilla.net>
parents:
140
diff
changeset
|
161 |
#def testCreateMail(self): |
|
90c95fdd1e33
first defer test in job management
Sandro Knauß <knauss@netzguerilla.net>
parents:
140
diff
changeset
|
162 |
# with self.session() as session: |
|
90c95fdd1e33
first defer test in job management
Sandro Knauß <knauss@netzguerilla.net>
parents:
140
diff
changeset
|
163 |
# u = User(name='test',apikey='abcdef123456789') |
|
90c95fdd1e33
first defer test in job management
Sandro Knauß <knauss@netzguerilla.net>
parents:
140
diff
changeset
|
164 |
# session.add(u) |
|
90c95fdd1e33
first defer test in job management
Sandro Knauß <knauss@netzguerilla.net>
parents:
140
diff
changeset
|
165 |
# job = createJob(u,[],Mail('sub','body','t@t.de'),[]) |