Ejemplo n.º 1
0
 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()
Ejemplo n.º 2
0
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()
Ejemplo n.º 3
0
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()
Ejemplo n.º 4
0
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()
Ejemplo n.º 5
0
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" )
Ejemplo n.º 6
0
 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)
Ejemplo n.º 7
0
 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" )
Ejemplo n.º 8
0
    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():
Ejemplo n.º 9
0
    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():
Ejemplo n.º 10
0
    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: