Ejemplo n.º 1
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.º 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()
        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.º 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()

    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 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" )