def test_wait_or_die_kills(self):
"""
wait_or_die eventually falls back to KILLing a process, after waiting
and terminating don't work.
"""
output_filename = self.makeFile("NOT RUN")
self._write_script(
("#!%s\n"
"import signal, os\n"
"signal.signal(signal.SIGTERM, signal.SIG_IGN)\n"
"file = open(%r, 'w')\n"
"file.write('RUN')\n"
"file.close()\n"
"os.kill(os.getpid(), signal.SIGSTOP)\n"
) % (sys.executable, output_filename))
self.addCleanup(setattr,
landscape.client.watchdog, "SIGKILL_DELAY",
landscape.client.watchdog.SIGKILL_DELAY)
self.addCleanup(setattr,
landscape.client.watchdog, "GRACEFUL_WAIT_PERIOD",
landscape.client.watchdog.GRACEFUL_WAIT_PERIOD)
landscape.client.watchdog.GRACEFUL_WAIT_PERIOD = 1
landscape.client.watchdog.SIGKILL_DELAY = 1
waiter = FileChangeWaiter(output_filename)
self.daemon.start()
waiter.wait()
self.assertEqual(open(output_filename).read(), "RUN")
return self.daemon.wait_or_die()
评论列表
文章目录