Example #1
0
    def _wait_for_job_done(cls, job: RemoteSystemJob, remote_sys: RemoteSystem,
                           done_event: DoneEvent) -> None:
        """
        Wait 5 minutes until the job is done.
        Handles the result from the job with the job.prepare(data) method.
        Triggers the next job/test.

        :param job: job to execute
        :param remote_sys: the RemoteSystem
        """
        async_result = cls._task_pool.apply_async(func=cls._execute_job,
                                                  args=(job, remote_sys))
        result = async_result.get(
            300)  # wait 5 minutes or raise an TimeoutError
        logging.debug("%sJob done " + str(job), LoggerSetup.get_log_deep(1))
        logging.debug("%sAt Router(" + str(remote_sys.id) + ")",
                      LoggerSetup.get_log_deep(2))
        try:
            exception = None  # task.exception() # TODO #105
            if exception is not None:
                logging.error("%sTask raised an exception: " + str(exception),
                              LoggerSetup.get_log_deep(1))
            else:
                job.post_process(result, cls)

        finally:
            cls.set_running_task(remote_sys, None)
            # start next test in the queue
            done_event.set()
            cls.__start_task(remote_sys, None)
Example #2
0
    def _wait_for_job_done(cls, job: RemoteSystemJob, remote_sys: RemoteSystem, done_event: DoneEvent) -> None:
        """
        Wait 2 minutes until the job is done.
        Handles the result from the job with the job.prepare(data) method.
        Triggers the next job/test.

        :param job: job to execute
        :param remote_sys: the RemoteSystem
        :param done_event: event which will be triggered when the task is finished
        """
        async_result = cls._task_pool.apply_async(func=cls._execute_job, args=(job, remote_sys, cls._routers))
        try:
            result = async_result.get(120)  # wait 2 minutes or raise an TimeoutError
            logging.debug("%sJob done " + str(job), LoggerSetup.get_log_deep(1))
            logging.debug("%sAt Router(" + str(remote_sys.id) + ")", LoggerSetup.get_log_deep(2))
            job.post_process(result, cls)

        except Exception as e:
                logging.error("%sTask raised an exception: " + str(e), LoggerSetup.get_log_deep(1))
                cls._task_errors.append((remote_sys.id, sys.exc_info()))
        finally:
            cls.set_running_task(remote_sys, None)
            # start next test in the queue
            done_event.set()
            cls.__start_task(remote_sys, None)
Example #3
0
    def _execute_job(cls, job: RemoteSystemJob,
                     remote_sys: RemoteSystem) -> {}:
        logging.debug(
            "%sExecute job " + str(job) + " on Router(" + str(remote_sys.id) +
            ")", LoggerSetup.get_log_deep(2))
        job.prepare(remote_sys)

        cls.__setns(remote_sys)
        try:
            result = job.run()
        except Exception:
            logging.debug("Error while execute job " + str(job))

        return result
Example #4
0
    def _execute_job(cls, job: RemoteSystemJob, remote_sys: RemoteSystem, routers: List[Router]) -> {}:
        logging.debug("%sExecute job " + str(job) + " on Router(" + str(remote_sys.id) + ")",
                      LoggerSetup.get_log_deep(2))
        setproctitle(str(remote_sys.id) + " - " + str(job))
        job.prepare(remote_sys, routers)

        cls.__setns(remote_sys)
        result = None
        try:
            result = job.run()
        except Exception as e:
            logging.error("%sError while execute job " + str(job), LoggerSetup.get_log_deep(1))
            logging.error("%s" + str(e), LoggerSetup.get_log_deep(2))

        return result
Example #5
0
 def __init__(self, methodName="runTest"):
     TestCase.__init__(self, methodName)
     RemoteSystemJob.__init__(self)
Example #6
0
 def __init__(self, methodName='runTest'):
     TestCase.__init__(self, methodName)
     RemoteSystemJob.__init__(self)