|
2 | 2 |
|
3 | 3 | import logging |
4 | 4 |
|
| 5 | +from wolframclient.exception import WolframKernelException |
5 | 6 | from wolframclient.deserializers import WXFConsumer, binary_deserialize |
6 | 7 | from wolframclient.evaluation import ( |
7 | 8 | WolframCloudAsyncSession, |
@@ -111,6 +112,25 @@ async def test_eval_parallel(self): |
111 | 112 | res = await asyncio.gather(*tasks) |
112 | 113 | self.assertEqual(res, list(range(1, 11))) |
113 | 114 |
|
| 115 | + @run_in_loop |
| 116 | + async def test_quit_restart(self): |
| 117 | + try: |
| 118 | + async_session = WolframLanguageAsyncSession( |
| 119 | + kernel_path, kernel_loglevel=logging.INFO |
| 120 | + ) |
| 121 | + pid1 = await async_session.evaluate("$ProcessID") |
| 122 | + self.assertEqual(pid1, async_session.kernel_controller.pid) |
| 123 | + with self.assertRaises(WolframKernelException): |
| 124 | + await async_session.evaluate("Quit[]") |
| 125 | + await async_session.terminate() |
| 126 | + pid2 = await async_session.evaluate("$ProcessID") |
| 127 | + self.assertEqual(pid2, async_session.kernel_controller.pid) |
| 128 | + self.assertNotEqual(pid1, pid2) |
| 129 | + finally: |
| 130 | + if async_session: |
| 131 | + await async_session.terminate() |
| 132 | + self.assertTrue(async_session.stopped) |
| 133 | + |
114 | 134 | def test_kwargs_parameters(self): |
115 | 135 | TestKernelBase.class_kwargs_parameters(self, WolframLanguageAsyncSession) |
116 | 136 |
|
@@ -207,7 +227,7 @@ async def test_pool_from_mixed_kernel_cloud_path(self): |
207 | 227 | kernel_path, |
208 | 228 | ) |
209 | 229 | async with WolframEvaluatorPool( |
210 | | - sessions, kernel_loglevel=logging.INFO, STARTUP_TIMEOUT=5, TERMINATE_TIMEOUT=3 |
| 230 | + sessions, kernel_loglevel=logging.INFO, STARTUP_TIMEOUT=20, TERMINATE_TIMEOUT=3 |
211 | 231 | ) as pool: |
212 | 232 | await self._pool_evaluation_check(pool) |
213 | 233 | for session in sessions: |
|
0 commit comments