def init(self): if test_command == 'child_error_during_init': #Pretend we were actually doing something FunkyWebServer.parse_args_and_setup_logging() logging.info("Child about to fail") raise ValueError('I was told to fail') elif test_command == 'child_freeze_during_init': FunkyWebServer.parse_args_and_setup_logging() hold_gil(10*60) self.server = FunkyWebServer()
class ChildProcessForTests(ChildProcess): def init(self): if test_command == 'child_error_during_init': #Pretend we were actually doing something FunkyWebServer.parse_args_and_setup_logging() logging.info("Child about to fail") raise ValueError('I was told to fail') elif test_command == 'child_freeze_during_init': FunkyWebServer.parse_args_and_setup_logging() hold_gil(10*60) self.server = FunkyWebServer() def run(self): if test_command == 'child_error_during_run': raise ValueError('I was told to fail') self.server.run() def stop(self, timeout=None): if hasattr(self, 'server'): self.server.stop()
class ChildProcessForTests(ChildProcess): def init(self): if test_command == 'child_error_during_init': #Pretend we were actually doing something FunkyWebServer.parse_args_and_setup_logging() logging.info("Child about to fail") raise ValueError('I was told to fail') elif test_command == 'child_freeze_during_init': FunkyWebServer.parse_args_and_setup_logging() hold_gil(10*60) self.server = FunkyWebServer() signal.signal(signal.SIGINT, self.signal_handler) def signal_handler(self, signum, frame): if signum == signal.SIGINT: logging.info("Stopping server - process %d", os.getpid()) self.server.stop() def run(self): if test_command == 'child_error_during_run': raise ValueError('I was told to fail') self.server.run() def stop(self, timeout=None): if hasattr(self, 'server'): self.server.stop()
class ChildProcessForTests(ChildProcess): def init(self): if test_command == 'child_error_during_init': #Pretend we were actually doing something FunkyWebServer.parse_args_and_setup_logging() logging.info("Child about to fail") raise ValueError('I was told to fail') elif test_command == 'child_freeze_during_init': FunkyWebServer.parse_args_and_setup_logging() hold_gil(10 * 60) self.server = FunkyWebServer() signal.signal(signal.SIGINT, self.signal_handler) def signal_handler(self, signum, frame): if signum == signal.SIGINT: logging.info("Stopping server - process %d", os.getpid()) self.server.stop() def run(self): if test_command == 'child_error_during_run': raise ValueError('I was told to fail') self.server.run() def stop(self, timeout=None): if hasattr(self, 'server'): self.server.stop()
class ProcessFamilyTestService(win32serviceutil.ServiceFramework): _svc_name_ = Config.svc_name _svc_display_name_ = "Process Family Test Service" _svc_description_ = "A testing windows service for processfamily" def __init__(self, args): win32serviceutil.ServiceFramework.__init__(self, args) def SvcStop(self): #We need 12 seconds = cos we might have to wait 10 for a frozen child self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING, waitHint=12000) servicemanager.LogInfoMsg("ProcessFamilyTest stopping ..." ) logging.info("Stop request received") self.server.stop() def SvcDoRun(self): servicemanager.LogInfoMsg("ProcessFamilyTest starting up ..." ) try: logging.getLogger().setLevel(logging.INFO) self.server = FunkyWebServer() logging.info("Starting process family") family = ProcessFamilyForWin32ServiceTests(number_of_child_processes=self.server.num_children) try: family.start(timeout=10) servicemanager.LogInfoMsg("ProcessFamilyTest started") try: logging.info("Starting HTTP server") self.server.run() except KeyboardInterrupt: logging.info("Stopping...") finally: logging.info("Stopping process family") family.stop(timeout=10) except Exception as e: logging.error("Error in windows service: %s\n%s", e, _traceback_str()) finally: logging.info("Stopping") stop_threads(exclude_thread_fn=lambda t: t.getName() != 'MainThread') servicemanager.LogInfoMsg("ProcessFamilyTest stopped" )
def init(self): if test_command == 'child_error_during_init': #Pretend we were actually doing something FunkyWebServer.parse_args_and_setup_logging() logging.info("Child about to fail") raise ValueError('I was told to fail') elif test_command == 'child_freeze_during_init': FunkyWebServer.parse_args_and_setup_logging() hold_gil(10 * 60) self.server = FunkyWebServer() signal.signal(signal.SIGINT, self.signal_handler)
def SvcDoRun(self): servicemanager.LogInfoMsg("ProcessFamilyTest starting up ..." ) try: logging.getLogger().setLevel(logging.INFO) self.server = FunkyWebServer() logging.info("Starting process family") family = ProcessFamilyForWin32ServiceTests(number_of_child_processes=self.server.num_children) self.server.family = family family.start(timeout=10) servicemanager.LogInfoMsg("ProcessFamilyTest started") try: logging.info("Starting HTTP server") self.server.run() except KeyboardInterrupt: logging.info("Stopping...") except Exception as e: logging.error("Error in windows service: %s\n%s", e, _traceback_str()) finally: logging.info("Stopping") stop_threads(exclude_thread_fn=lambda t: t.getName() != 'MainThread') servicemanager.LogInfoMsg("ProcessFamilyTest stopped" )
def handle_sys_err_line(self, child_index, line): logging.info("SYSERR: %d: %s", child_index+1, line.strip()) def get_child_process_cmd(self, child_number): if self.override_command_line: return self.override_command_line return super(ProcessFamilyForTests, self).get_child_process_cmd(child_number) + [ '--process_number', str(child_number+1)] if __name__ == '__main__': logging.basicConfig(level=logging.INFO) STARTUP_TIMEOUT = int(get_env("STARTUP_TIMEOUT", "") or "10") logging.info("Starting") try: try: server = FunkyWebServer() server_thread = None family = ProcessFamilyForTests(number_of_child_processes=server.num_children) server.family = family try: try: family.start(timeout=STARTUP_TIMEOUT) server_thread = threading.Thread(target=server.run) server_thread.start() while server_thread.is_alive(): server_thread.join(1) except KeyboardInterrupt: logging.info("Stopping...") server.stop() finally: if server_thread and server_thread.is_alive():
def handle_sys_err_line(self, child_index, line): logging.info("SYSERR: %d: %s", child_index+1, line.strip()) def get_child_process_cmd(self, child_number): if self.override_command_line: return self.override_command_line return super(ProcessFamilyForTests, self).get_child_process_cmd(child_number) + [ '--process_number', str(child_number+1)] if __name__ == '__main__': logging.basicConfig(level=logging.INFO) STARTUP_TIMEOUT = int(os.environ.get("STARTUP_TIMEOUT", "") or "10") logging.info("Starting") try: try: server = FunkyWebServer() server_thread = None family = ProcessFamilyForTests(number_of_child_processes=server.num_children) server.family = family try: try: family.start(timeout=STARTUP_TIMEOUT) server_thread = threading.Thread(target=server.run) server_thread.start() while server_thread.isAlive(): server_thread.join(1) except KeyboardInterrupt: logging.info("Stopping...") server.stop() finally: if server_thread and server_thread.isAlive():
def handle_sys_err_line(self, child_index, line): logging.info("SYSERR: %d: %s", child_index+1, line.strip()) def get_child_process_cmd(self, child_number): if self.override_command_line: return self.override_command_line return super(ProcessFamilyForTests, self).get_child_process_cmd(child_number) + [ '--process_number', str(child_number+1)] if __name__ == '__main__': logging.basicConfig(level=logging.INFO) logging.info("Starting") try: try: server = FunkyWebServer() server_thread = None family = ProcessFamilyForTests(number_of_child_processes=server.num_children) try: try: family.start(timeout=10) server_thread = threading.Thread(target=server.run) server_thread.start() while server_thread.isAlive(): server_thread.join(1) except KeyboardInterrupt: logging.info("Stopping...") server.stop() finally: family.stop(timeout=10) finally: