def test_run_read(self): loop = RecocoIOLoop() (left, right) = MockSocket.pair() worker = loop.new_worker(left) # callback for ioworker to record receiving self.received = None def r(worker): self.received = worker.peek() worker.rx_handler = r # 'start' the run (dark generator magic here). # Does not actually execute run, but 'yield' a generator g = loop.run() # g.next() will call it, and get as far as the 'yield select' select = next(g) # send data on other socket half right.send(b"hallo") # now we emulate the return value of the select ([rlist],[wlist], [elist]) g.send(([worker], [], [])) # that should result in the socket being red the data being handed # to the ioworker, the callback being called. Everybody happy. self.assertEqual(self.received, b"hallo")
def test_run_read(self): loop = RecocoIOLoop() (left, right) = MockSocket.pair() worker = loop.new_worker(left) # callback for ioworker to record receiving self.received = None def r(worker): self.received = worker.peek() worker.rx_handler = r # 'start' the run (dark generator magic here). # Does not actually execute run, but 'yield' a generator g = loop.run() # g.next() will call it, and get as far as the 'yield select' select = g.next() # send data on other socket half right.send("hallo") # now we emulate the return value of the select ([rlist],[wlist], [elist]) g.send(([worker], [], [])) # that should result in the socket being red the data being handed # to the ioworker, the callback being called. Everybody happy. self.assertEquals(self.received, "hallo")
def test_run_close(self): loop = RecocoIOLoop() (left, right) = MockSocket.pair() worker = loop.new_worker(left) self.assertFalse(worker in loop._workers, "Should not add to _workers yet, until we start up the loop") self.assertTrue(len(loop._pending_commands) == 1, "Should have added pending create() command") worker.close() # This causes the worker to be scheduled to be closed -- it also # calls pinger.ping(). However, the Select task won't receive the ping # Until after this method has completed! Thus, we only test whether # worker has been added to the pending close queue self.assertTrue(len(loop._pending_commands) == 2, "Should have added pending close() command")
def test_run_write(self): loop = RecocoIOLoop() (left, right) = MockSocket.pair() worker = loop.new_worker(left) worker.send(b"heppo") # 'start' the run (dark generator magic here). # Does not actually execute run, but 'yield' a generator g = loop.run() # g.next() will call it, and get as far as the 'yield select' select = next(g) # now we emulate the return value of the select ([rlist],[wlist], [elist]) g.send(([], [worker], [])) # that should result in the stuff being sent on the socket self.assertEqual(right.recv(), b"heppo")
def test_run_write(self): loop = RecocoIOLoop() (left, right) = MockSocket.pair() worker = loop.new_worker(left) worker.send("heppo") # 'start' the run (dark generator magic here). # Does not actually execute run, but 'yield' a generator g = loop.run() # g.next() will call it, and get as far as the 'yield select' select = g.next() # now we emulate the return value of the select ([rlist],[wlist], [elist]) g.send(([], [worker], [])) # that should result in the stuff being sent on the socket self.assertEqual(right.recv(), "heppo")
def test_run_close(self): loop = RecocoIOLoop() (left, right) = MockSocket.pair() worker = loop.new_worker(left) self.assertFalse( worker in loop._workers, "Should not add to _workers yet, until we start up the loop") self.assertTrue( len(loop._pending_commands) == 1, "Should have added pending create() command") worker.close() # This causes the worker to be scheduled to be closed -- it also # calls pinger.ping(). However, the Select task won't receive the ping # Until after this method has completed! Thus, we only test whether # worker has been added to the pending close queue self.assertTrue( len(loop._pending_commands) == 2, "Should have added pending close() command")
def test_stop(self): loop = RecocoIOLoop() loop.stop()
def test_basic(self): loop = RecocoIOLoop() (left, right) = MockSocket.pair() loop.new_worker(left)