Path: blob/master/tests/forking_kernel_manager_tests.py
447 views
import forking_kernel_manager1from misc import assert_is, assert_equal, assert_in, assert_not_in, assert_raises, assert_regexp_matches, assert_is_instance, assert_is_not_none, assert_greater, assert_len, assert_uuid, capture_output2from multiprocessing import Process, Pipe3from IPython.config.loader import Config45def test_init():6fkm = forking_kernel_manager.ForkingKernelManager("testing.log", '127.0.0.1', update_function=test_init)7assert_len(fkm.kernels, 0)8assert_equal(fkm.filename, "testing.log")9assert_in("function test_init at ", repr(fkm.update_function))1011class TestForkingKernelManager(object):12def setup(self):13self.a = forking_kernel_manager.ForkingKernelManager("/dev/null", '127.0.0.1', update_function=None)14def teardown(self):15for i in self.a.kernels.keys():16self.a.kernels[i][0].terminate()17def test_start_kernel_success(self):18y = self.a.start_kernel()1920assert_is_instance(y, dict)21assert_len(y, 2)22assert_in("kernel_id", y)23assert_uuid(y["kernel_id"])24assert_in("connection", y)25assert_len(y["connection"], 6)26for s in ("stdin_port", "hb_port", "shell_port", "iopub_port"):27assert_in(s, y["connection"])28assert_len(str(y["connection"][s]), 5)29assert_in("ip", y["connection"])30assert_equal(y["connection"]["ip"], "127.0.0.1")31assert_in("key", y["connection"])32assert_uuid(y["connection"]["key"])3334assert_in(y["kernel_id"], self.a.kernels.keys())35assert_is_instance(self.a.kernels[y["kernel_id"]][0], Process)36assert_is(self.a.kernels[y["kernel_id"]][0].is_alive(), True)3738def test_resource_limit_setting(self): # incomplete39y = self.a.start_kernel(resource_limits = {"RLIMIT_CPU": 3})40proc = self.a.kernels[y["kernel_id"]][0]41# how to test if rlimit_cpu/any other rlimit is set given the multiprocessing.Process object proc??4243def test_kill_kernel_success(self): # depends on start_kernel44y = self.a.start_kernel()45kernel_id = y["kernel_id"]46proc = self.a.kernels[kernel_id][0]4748assert_is(proc.is_alive(), True)49retval = self.a.kill_kernel(kernel_id)50assert_is(retval, True)51assert_not_in(kernel_id, self.a.kernels.keys())52assert_is(proc.is_alive(), False)5354def test_kill_kernel_invalid_kernel_id(self):55kernel_id = 4456retval = self.a.kill_kernel(kernel_id)57assert_is(retval, False)5859def test_interrupt_kernel_success(self): # depends on start_kernel60y = self.a.start_kernel()61kernel_id = y["kernel_id"]62proc = self.a.kernels[kernel_id][0]6364assert_is(proc.is_alive(), True)65retval = self.a.interrupt_kernel(kernel_id)66assert_is(retval, True)67assert_is(proc.is_alive(), True)6869def test_interrupt_kernel_invalid_kernel_id(self):70kernel_id = 4471retval = self.a.interrupt_kernel(kernel_id)72assert_is(retval, False)7374def test_restart_kernel_success(self): # depends on start_kernel75y = self.a.start_kernel()76kernel_id = y["kernel_id"]77proc = self.a.kernels[kernel_id][0]78preports = self.a.kernels[kernel_id][1]7980assert_is(proc.is_alive(), True)81retval = self.a.restart_kernel(kernel_id)82assert_is(proc.is_alive(), False) # old kernel process is killed8384proc = self.a.kernels[kernel_id][0]85assert_is(proc.is_alive(), True) # and a new kernel process with the same kernel_id exists86postports = self.a.kernels[kernel_id][1]8788for s in ("stdin_port", "hb_port", "shell_port", "iopub_port"):89assert_equal(preports[s], postports[s]) # and that it has the same ports as before909192