def test_reap_more_than_once(self): options = DummyOptions() options.waitpid_return = 1, 1 pconfig = DummyPConfig(options, 'process', 'process', '/bin/process1') process = DummyProcess(pconfig) process.drained = False process.killing = True process.laststop = None process.waitstatus = None, None options.pidhistory = {1: process} supervisord = self._makeOne(options) supervisord.reap(recursionguard=99) self.assertEqual(process.finished, (1, 1))
def test_reap(self): options = DummyOptions() options.waitpid_return = 1, 1 pconfig = DummyPConfig(options, 'process', 'process', '/bin/process1') process = DummyProcess(pconfig) process.drained = False process.killing = 1 process.laststop = None process.waitstatus = None, None options.pidhistory = {1:process} supervisord = self._makeOne(options) supervisord.reap(once=True) self.assertEqual(process.finished, (1,1))
def test_write_fails_silently_if_process_is_killing(self): options = DummyOptions() config = DummyPConfig(options, 'cat', 'bin/cat') process = DummyProcess(config) process.pid = 42 process.killing = True event = DummyEvent() event.process = process response = 'STDIN:foobar' supervisor_twiddler.resulthandler.stdin_write_handler(event, response) self.assertEqual(process.stdin_buffer, '')
def test_write_encodes_unicode_as_utf8(self): options = DummyOptions() config = DummyPConfig(options, 'cat', 'bin/cat') process = DummyProcess(config) process.pid = 42 process.killing = False event = DummyEvent() event.process = process response = _u(_b('STDIN:foobar')) supervisor_twiddler.resulthandler.stdin_write_handler(event, response) self.assertEqual(process.stdin_buffer, 'foobar')
def test_handler_writes_chars_when_response_is_STDIN(self): options = DummyOptions() config = DummyPConfig(options, 'cat', 'bin/cat') process = DummyProcess(config) process.pid = 42 process.killing = False event = DummyEvent() event.process = process response = 'STDIN:foobar' supervisor_twiddler.resulthandler.stdin_write_handler(event, response) self.assertEqual(process.stdin_buffer, 'foobar')
def test_write_fails_silently_if_process_is_killing(self): options = DummyOptions() config = DummyPConfig(options, 'cat', 'bin/cat') process = DummyProcess(config) process.pid = 42 process.killing = True event = DummyEvent() event.process = process response = 'STDIN:foobar' supervisor_twiddler.resulthandler.stdin_write_handler(event, response) self.assertEqual(process.stdin_buffer, '')
def test_write_encodes_unicode_as_utf8(self): options = DummyOptions() config = DummyPConfig(options, 'cat', 'bin/cat') process = DummyProcess(config) process.pid = 42 process.killing = False event = DummyEvent() event.process = process response = _u(_b('STDIN:foobar')) supervisor_twiddler.resulthandler.stdin_write_handler(event, response) self.assertEqual(process.stdin_buffer, 'foobar')
def test_handler_writes_chars_when_response_is_STDIN(self): options = DummyOptions() config = DummyPConfig(options, 'cat', 'bin/cat') process = DummyProcess(config) process.pid = 42 process.killing = False event = DummyEvent() event.process = process response = 'STDIN:foobar' supervisor_twiddler.resulthandler.stdin_write_handler(event, response) self.assertEqual(process.stdin_buffer, 'foobar')
def test_reap_unknown_pid(self): options = DummyOptions() options.waitpid_return = 2, 0 # pid, status pconfig = DummyPConfig(options, 'process', 'process', '/bin/process1') process = DummyProcess(pconfig) process.drained = False process.killing = True process.laststop = None process.waitstatus = None, None options.pidhistory = {1: process} supervisord = self._makeOne(options) supervisord.reap(once=True) self.assertEqual(process.finished, None) self.assertEqual(options.logger.data[0], 'reaped unknown pid 2')
def test_reap_unknown_pid(self): options = DummyOptions() options.waitpid_return = 2, 0 # pid, status pconfig = DummyPConfig(options, 'process', 'process', '/bin/process1') process = DummyProcess(pconfig) process.drained = False process.killing = True process.laststop = None process.waitstatus = None, None options.pidhistory = {1: process} supervisord = self._makeOne(options) supervisord.reap(once=True) self.assertEqual(process.finished, None) self.assertEqual(options.logger.data[0], 'reaped unknown pid 2')