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)
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)
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
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
def __init__(self, methodName="runTest"): TestCase.__init__(self, methodName) RemoteSystemJob.__init__(self)
def __init__(self, methodName='runTest'): TestCase.__init__(self, methodName) RemoteSystemJob.__init__(self)