| author | Sandro Knauß <knauss@netzguerilla.net> |
| Tue, 05 Oct 2010 03:24:01 +0200 | |
| changeset 40 | 5d177c9d7fd2 |
| child 41 | 02e9b54ef4f0 |
| permissions | -rw-r--r-- |
|
40
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
1 |
# -*- coding: utf-8 -*- |
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
2 |
|
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
3 |
import unittest |
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
4 |
import logging |
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
5 |
from time import sleep |
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
6 |
|
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
7 |
from multiprocessing import Queue |
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
8 |
from multiprocessing.managers import BaseManager |
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
9 |
import iro |
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
10 |
from ..worker import Worker |
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
11 |
from ..job import Job |
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
12 |
|
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
13 |
from logging.handlers import BufferingHandler |
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
14 |
|
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
15 |
class MyHandler(BufferingHandler): |
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
16 |
def __init__(self): |
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
17 |
'''BufferingHandler takes a "capacity" argument |
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
18 |
so as to know when to flush. As we're overriding |
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
19 |
shouldFlush anyway, we can set a capacity of zero. |
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
20 |
You can call flush() manually to clear out the |
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
21 |
buffer.''' |
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
22 |
BufferingHandler.__init__(self, 0) |
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
23 |
|
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
24 |
def shouldFlush(self): |
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
25 |
return False |
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
26 |
|
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
27 |
def emit(self, record): |
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
28 |
self.buffer.append(record.__dict__) |
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
29 |
|
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
30 |
class MyManager(BaseManager): |
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
31 |
pass |
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
32 |
|
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
33 |
MyManager.register('Job', Job) |
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
34 |
|
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
35 |
|
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
36 |
class TestWorker(unittest.TestCase): |
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
37 |
def setUp(self): |
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
38 |
self.handler = h = MyHandler() |
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
39 |
self.logger = l = logging.getLogger() |
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
40 |
l.addHandler(h) |
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
41 |
|
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
42 |
self.manager = MyManager() |
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
43 |
self.manager.start() |
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
44 |
self.queue = Queue() |
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
45 |
self.worker=Worker(self.queue) |
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
46 |
self.worker.start() |
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
47 |
sleep(.5) |
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
48 |
|
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
49 |
|
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
50 |
def TearDown(self): |
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
51 |
self.manager.stop() |
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
52 |
self.queue.close() |
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
53 |
self.worker.terminate() |
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
54 |
self.logger.removeHandler(self.handler) |
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
55 |
self.handler.close() |
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
56 |
|
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
57 |
def testJob(self): |
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
58 |
job=Job(None,None,"test") |
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
59 |
self.assertEqual(job.status,"init") |
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
60 |
self.queue.put(job) |
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
61 |
sleep(.5) |
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
62 |
logging.debug("test") |
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
63 |
print self.handler.buffer |
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
64 |
self.assertEqual(job.status,"started") |
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
65 |
|
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
66 |
if __name__ == "__main__": |
|
5d177c9d7fd2
testWorker.py hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
67 |
unittest.main() |