Skip to content

Commit cdf77b5

Browse files
author
Dorian Birraux
committed
Add tests running Quit
1 parent 4fb032f commit cdf77b5

2 files changed

Lines changed: 37 additions & 2 deletions

File tree

wolframclient/tests/evaluation/test_coroutine.py

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import logging
44

5+
from wolframclient.exception import WolframKernelException
56
from wolframclient.deserializers import WXFConsumer, binary_deserialize
67
from wolframclient.evaluation import (
78
WolframCloudAsyncSession,
@@ -111,6 +112,25 @@ async def test_eval_parallel(self):
111112
res = await asyncio.gather(*tasks)
112113
self.assertEqual(res, list(range(1, 11)))
113114

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+
114134
def test_kwargs_parameters(self):
115135
TestKernelBase.class_kwargs_parameters(self, WolframLanguageAsyncSession)
116136

@@ -207,7 +227,7 @@ async def test_pool_from_mixed_kernel_cloud_path(self):
207227
kernel_path,
208228
)
209229
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
211231
) as pool:
212232
await self._pool_evaluation_check(pool)
213233
for session in sessions:

wolframclient/tests/evaluation/test_kernel.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,21 @@ def test_auto_start_session(self):
178178
session.terminate()
179179
self.assertTrue(session.stopped)
180180

181+
def test_kernel_dies_restart(self):
182+
try:
183+
session = WolframLanguageSession(kernel_path)
184+
pid1 = session.evaluate("$ProcessID")
185+
self.assertEqual(pid1, session.kernel_controller.pid)
186+
with self.assertRaises(WolframKernelException):
187+
session.evaluate("Quit[]")
188+
session.terminate()
189+
pid2 = session.evaluate("$ProcessID")
190+
self.assertEqual(pid2, session.kernel_controller.pid)
191+
self.assertNotEqual(pid1, pid2)
192+
finally:
193+
session.terminate()
194+
self.assertTrue(session.stopped)
195+
181196
def test_pure_function_inputform(self):
182197
f = self.kernel_session.function("#+1&")
183198
self.assertEqual(f(3), 4)
@@ -298,7 +313,7 @@ def test_throw(self):
298313
class TestSessionTimeout(TestCaseSettings):
299314
def test_evaluate_async_basic_inputform(self):
300315
future = self.kernel_session.evaluate_future("1+1")
301-
self.assertEqual(future.result(timeout=2), 2)
316+
self.assertEqual(future.result(timeout=5), 2)
302317

303318
def test_evaluate_async_basic_wl(self):
304319
future = self.kernel_session.evaluate_future(wl.Plus(1, 2))

0 commit comments

Comments
 (0)