예제 #1
0
 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)
예제 #2
0
파일: green.py 프로젝트: LJS109/pulsar
 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()
예제 #3
0
 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()
예제 #4
0
 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)
예제 #5
0
    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)
예제 #6
0
 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)
예제 #7
0
파일: greenio.py 프로젝트: LJS109/pulsar
 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)
예제 #8
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)
예제 #9
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)
예제 #10
0
 async def test_async_in_greenlet(self):
     pool = greenio.GreenPool()
     result = await pool.submit(async_function, self)
     self.assertEqual(result, True)
예제 #11
0
 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)
예제 #12
0
 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)