def setUp(self): #self.scheduler logging.basicConfig() self.scheduler = Scheduler(DefaultPolling()) #self.scheduler.debugging = True #self.scheduler.logger.setLevel('DEBUG') #Client.logger.setLevel('DEBUG') import tests import os.path rootpath, _ = os.path.split(tests.__path__[0]) if rootpath: os.chdir(rootpath) self.scheduler.queue.addSubQueue(3, PollEvent.createMatcher(category=PollEvent.WRITE_READY), 'write', None, None, CBQueue.AutoClassQueue.initHelper('fileno')) self.scheduler.queue.addSubQueue(1, PollEvent.createMatcher(category=PollEvent.READ_READY), 'read', None, None, CBQueue.AutoClassQueue.initHelper('fileno')) self.scheduler.queue.addSubQueue(5, PollEvent.createMatcher(category=PollEvent.ERROR), 'error') self.scheduler.queue.addSubQueue(2, ConnectionControlEvent.createMatcher(), 'control') self.scheduler.queue.addSubQueue(4, ConnectionWriteEvent.createMatcher(), 'connectionwrite', 40, 40, CBQueue.AutoClassQueue.initHelper('connection')) self.scheduler.queue.addSubQueue(10, RoutineControlEvent.createMatcher(), 'routine') self.scheduler.queue.addSubQueue(9, TimerEvent.createMatcher(), 'timer') self.scheduler.queue.addSubQueue(8, ResolveResponseEvent.createMatcher(), 'resolve') self.scheduler.queue.addSubQueue(8, ResolveRequestEvent.createMatcher(), 'resolvereq') self.scheduler.queue.addSubQueue(20, SystemControlEvent.createMatcher(), 'sysctl') self.scheduler.queue.addSubQueue(0, SystemControlLowPriorityEvent.createMatcher(), 'sysctllow') #Client.logger.setLevel('DEBUG') #TcpServer.logger.setLevel('DEBUG') self.protocolServer = TestProtocol(True) self.protocolClient = TestProtocol(False) self.resolver = Resolver(scheduler=self.scheduler) self.resolver.start()
def testBlock(self): scheduler = Scheduler() scheduler.queue.addSubQueue(10, RoutineControlEvent.createMatcher()) scheduler.queue.addSubQueue(1, TestConsumerEvent.createMatcher(), 'consumer', 5, 5) rA = RoutineContainer(scheduler) output = bytearray() async def mainA(): rA.subroutine(mainB(), daemon = True) for _ in range(0,10): await rA.wait_for_send(TestConsumerEvent(rA.mainroutine)) output.extend(b'A') async def mainB(): await rA.do_events() matcher = TestConsumerEvent.createMatcher(producer=rA.mainroutine) while True: ev = await matcher ev.canignore = True output.extend(b'B') async def mainC(): await rA.do_events() output.extend(b'C') rA.main = mainA rA.start() rA.subroutine(mainC()) scheduler.main() self.assertEqual(output, b'AAAAACBABABABABABBBBB')
def testBlock(self): scheduler = Scheduler() scheduler.queue.addSubQueue(10, RoutineControlEvent.createMatcher()) scheduler.queue.addSubQueue(1, TestConsumerEvent.createMatcher(), 'consumer', 5, 5) rA = RoutineContainer(scheduler) output = bytearray() def mainA(): rA.subroutine(mainB(), daemon=True) for i in range(0, 10): for ms in rA.waitForSend(TestConsumerEvent(rA.mainroutine)): yield ms output.extend(b'A') def mainB(): for m in rA.doEvents(): yield m matcher = TestConsumerEvent.createMatcher(producer=rA.mainroutine) while True: yield (matcher, ) rA.event.canignore = True output.extend(b'B') def mainC(): for m in rA.doEvents(): yield m output.extend(b'C') rA.main = mainA rA.start() rA.subroutine(mainC()) scheduler.main() self.assertEqual(output, b'AAAAACBABABABABABBBBB')
def testLoopConsumer(self): scheduler = Scheduler() scheduler.queue.addSubQueue(10, RoutineControlEvent.createMatcher()) scheduler.queue.addSubQueue(1, TestConsumerEvent.createMatcher(), 'consumer', 5, 5) rA = RoutineContainer(scheduler) output = bytearray() def mainA(): rA.subroutine(mainB(), True, 'mainB', True) matcher = TestConsumerEvent.createMatcher(rA.mainB) for i in range(0, 10): for ms in rA.waitForSend(TestConsumerEvent(rA.mainroutine)): yield ms output.extend(b'A') yield (matcher, ) def mainB(): matcher = TestConsumerEvent.createMatcher(producer=rA.mainroutine) while True: yield (matcher, ) rA.event.canignore = True output.extend(b'B') for ms in rA.waitForSend( TestConsumerEvent(rA.mainB, canignore=True)): yield ms rA.main = mainA rA.start() scheduler.main() self.assertEqual(output, b'ABABABABABABABABABAB')
def testBlock(self): scheduler = Scheduler() scheduler.queue.addSubQueue(10, RoutineControlEvent.createMatcher()) scheduler.queue.addSubQueue(1, TestConsumerEvent.createMatcher(), 'consumer', 5, 5) rA = RoutineContainer(scheduler) output = bytearray() def mainA(): rA.subroutine(mainB(), daemon = True) for i in range(0,10): for ms in rA.waitForSend(TestConsumerEvent(rA.mainroutine)): yield ms output.extend(b'A') def mainB(): for m in rA.doEvents(): yield m matcher = TestConsumerEvent.createMatcher(producer=rA.mainroutine) while True: yield (matcher,) rA.event.canignore = True output.extend(b'B') def mainC(): for m in rA.doEvents(): yield m output.extend(b'C') rA.main = mainA rA.start() rA.subroutine(mainC()) scheduler.main() self.assertEqual(output, b'AAAAACBABABABABABBBBB')
def testLoopConsumer(self): scheduler = Scheduler() scheduler.queue.addSubQueue(10, RoutineControlEvent.createMatcher()) scheduler.queue.addSubQueue(1, TestConsumerEvent.createMatcher(), 'consumer', 5, 5) rA = RoutineContainer(scheduler) output = bytearray() def mainA(): rA.subroutine(mainB(), True, 'mainB', True) matcher = TestConsumerEvent.createMatcher(rA.mainB) for i in range(0,10): for ms in rA.waitForSend(TestConsumerEvent(rA.mainroutine)): yield ms output.extend(b'A') yield (matcher,) def mainB(): matcher = TestConsumerEvent.createMatcher(producer=rA.mainroutine) while True: yield (matcher,) rA.event.canignore = True output.extend(b'B') for ms in rA.waitForSend(TestConsumerEvent(rA.mainB, canignore = True)): yield ms rA.main = mainA rA.start() scheduler.main() self.assertEqual(output, b'ABABABABABABABABABAB')