def test_error_in_pool(self): # Test an error pool = greenio.GreenPool() yield from self. async .assertRaises(RuntimeError, pool.submit, raise_error) self.assertEqual(len(pool._greenlets), 1) self.assertEqual(len(pool._available), 1)
def setUpClass(cls): s = server(name=cls.__name__.lower(), bind='127.0.0.1:0') cls.server_cfg = yield from send('arbiter', 'run', s) cls.client = Echo(cls.server_cfg.addresses[0]) cls.green = EchoGreen(cls.server_cfg.addresses[0]) cls.msg = b''.join((b'a' for x in range(2**13))) cls.pool = greenio.GreenPool()
async def setUpClass(cls): s = server(name=cls.__name__.lower(), bind='127.0.0.1:0') cls.server_cfg = await send('arbiter', 'run', s) cls.client = Echo(cls.server_cfg.addresses[0]) cls.green = EchoGreen(cls.server_cfg.addresses[0]) cls.msg = b'a'*2**13 cls.pool = greenio.GreenPool()
async def test_error_in_pool(self): # Test an error pool = greenio.GreenPool() with self.assertRaises(RuntimeError): await pool.submit(raise_error) self.assertEqual(len(pool._greenlets), 1) self.assertEqual(len(pool._available), 1)
async def test_greenlet_methods(self): pool = greenio.GreenPool() self.assertFalse(pool.in_green_worker) self.assertFalse(pool.getcurrent().parent) def _greenlet_methods(): self.assertTrue(pool.in_green_worker) self.assertTrue(pool.getcurrent().parent) await pool.submit(_greenlet_methods)
def test_pool(self): pool = greenio.GreenPool() self.assertTrue(pool._loop) self.assertEqual(pool._loop, get_event_loop()) self.assertFalse(pool._greenlets) future = pool.submit(lambda: 'Hi!') self.assertIsInstance(future, Future) result = yield from future self.assertEqual(result, 'Hi!') self.assertEqual(len(pool._greenlets), 1) self.assertEqual(len(pool._available), 1)
def test_shutdown(self): # Test an error pool = greenio.GreenPool() yield from self. async .assertEqual(pool.submit(lambda: 'OK'), 'OK') self.assertEqual(len(pool._greenlets), 1) self.assertEqual(len(pool._available), 1) a = pool.submit(lambda: 'a') b = pool.submit(lambda: 'b') self.assertEqual(len(pool._greenlets), 2) self.assertEqual(len(pool._available), 0) result = yield from multi_async([a, b]) self.assertEqual(result[0], 'a') self.assertEqual(result[1], 'b') self.assertEqual(len(pool._greenlets), 2) self.assertEqual(len(pool._available), 2) yield from pool.shutdown() self.assertEqual(len(pool._greenlets), 0) self.assertEqual(len(pool._available), 0)
async def test_shutdown(self): # Test an error pool = greenio.GreenPool() self.assertEqual(pool._max_workers, _DEFAULT_WORKERS) await self.wait.assertEqual(pool.submit(lambda: 'OK'), 'OK') self.assertEqual(len(pool._greenlets), 1) self.assertEqual(len(pool._available), 1) a = pool.submit(lambda: 'a') b = pool.submit(lambda: 'b') self.assertEqual(len(pool._greenlets), 2) self.assertEqual(len(pool._available), 0) result = await multi_async([a, b]) self.assertEqual(result[0], 'a') self.assertEqual(result[1], 'b') self.assertEqual(len(pool._greenlets), 2) self.assertEqual(len(pool._available), 2) await pool.shutdown() self.assertEqual(len(pool._greenlets), 0) self.assertEqual(len(pool._available), 0)
async def test_shutdown(self): # Test an error pool = greenio.GreenPool() self.assertEqual(pool._max_workers, _DEFAULT_WORKERS) self.assertEqual(await pool.submit(lambda: 'OK'), 'OK') self.assertEqual(len(pool._greenlets), 1) self.assertEqual(len(pool._available), 1) a = pool.submit(lambda: 'a') b = pool.submit(lambda: 'b') self.assertEqual(len(pool._greenlets), 2) self.assertEqual(len(pool._available), 0) result = await asyncio.gather(a, b) self.assertEqual(result[0], 'a') self.assertEqual(result[1], 'b') self.assertEqual(len(pool._greenlets), 2) self.assertEqual(len(pool._available), 2) self.assertEqual(pool.closed, False) await pool.shutdown() self.assertEqual(pool.closed, True) self.assertEqual(len(pool._greenlets), 0) self.assertEqual(len(pool._available), 0)
async def test_async_in_greenlet(self): pool = greenio.GreenPool() result = await pool.submit(async_function, self) self.assertEqual(result, True)
async def test_uncatched_stopiteration(self): pool = greenio.GreenPool() with self.assertRaises(RuntimeError) as cm: await pool.submit(lambda: next(iter([]))) self.assertIsInstance(cm.exception.__cause__, StopIteration)
def test_greenwsgi(self): wsgi = mock.MagicMock() pool = greenio.GreenPool() green = greenio.GreenWSGI(wsgi, pool) self.assertEqual(green.middleware[0], wsgi) self.assertEqual(green.pool, pool)