iro/tests/testWorker.py
author Sandro Knauß <knauss@netzguerilla.net>
Tue, 05 Oct 2010 03:24:01 +0200
changeset 40 5d177c9d7fd2
child 41 02e9b54ef4f0
permissions -rw-r--r--
testWorker.py hinzugefügt
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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()