mirror of
https://github.com/aykhans/AzSuicideDataVisualization.git
synced 2025-04-23 10:43:06 +00:00
65 lines
1.8 KiB
Python
65 lines
1.8 KiB
Python
import os
|
|
import shutil
|
|
import sys
|
|
import time
|
|
from subprocess import PIPE
|
|
from subprocess import Popen
|
|
from tempfile import mkdtemp
|
|
|
|
|
|
def _launch(extra_env):
|
|
env = os.environ.copy()
|
|
env.update(extra_env)
|
|
return Popen(
|
|
[sys.executable, "-c", "from jupyter_client.kernelapp import main; main()"],
|
|
env=env,
|
|
stderr=PIPE,
|
|
)
|
|
|
|
|
|
WAIT_TIME = 10
|
|
POLL_FREQ = 10
|
|
|
|
|
|
def test_kernelapp_lifecycle():
|
|
# Check that 'jupyter kernel' starts and terminates OK.
|
|
runtime_dir = mkdtemp()
|
|
startup_dir = mkdtemp()
|
|
started = os.path.join(startup_dir, "started")
|
|
try:
|
|
p = _launch(
|
|
{
|
|
"JUPYTER_RUNTIME_DIR": runtime_dir,
|
|
"JUPYTER_CLIENT_TEST_RECORD_STARTUP_PRIVATE": started,
|
|
}
|
|
)
|
|
# Wait for start
|
|
for _ in range(WAIT_TIME * POLL_FREQ):
|
|
if os.path.isfile(started):
|
|
break
|
|
time.sleep(1 / POLL_FREQ)
|
|
else:
|
|
raise AssertionError("No started file created in {} seconds".format(WAIT_TIME))
|
|
|
|
# Connection file should be there by now
|
|
for _ in range(WAIT_TIME * POLL_FREQ):
|
|
files = os.listdir(runtime_dir)
|
|
if files:
|
|
break
|
|
time.sleep(1 / POLL_FREQ)
|
|
else:
|
|
raise AssertionError("No connection file created in {} seconds".format(WAIT_TIME))
|
|
assert len(files) == 1
|
|
cf = files[0]
|
|
assert cf.startswith("kernel")
|
|
assert cf.endswith(".json")
|
|
|
|
# Send SIGTERM to shut down
|
|
time.sleep(1)
|
|
p.terminate()
|
|
_, stderr = p.communicate(timeout=WAIT_TIME)
|
|
assert cf in stderr.decode("utf-8", "replace")
|
|
finally:
|
|
shutil.rmtree(runtime_dir)
|
|
shutil.rmtree(startup_dir)
|