def _launch(self, *args: str):
        from hstest.stage_test import StageTest
        test_num = StageTest.curr_test_run.test_num

        InputHandler.set_dynamic_input_func(lambda: self._request_input())
        self.__executor = DaemonThreadPoolExecutor(
            name=f"MainModuleExecutor test #{test_num}")
        self.__task = self.__executor.submit(
            lambda: self._invoke_method(*args))
    def _run_file(self, test_run: TestRun) -> Optional[CheckResult]:
        test_case = test_run.test_case
        time_limit = test_case.time_limit

        executor = DaemonThreadPoolExecutor(
            name=f"AsyncMainFileRunner test #{test_run.test_num}")
        try:
            future: Future = executor.submit(
                lambda: self._run_dynamic_test(test_run))
            if time_limit <= 0 or debug_mode:
                return future.result()
            else:
                return future.result(timeout=time_limit / 1000)
        except TimeoutError:
            test_run.set_error_in_test(TimeLimitException(time_limit))
        except BaseException as ex:
            test_run.set_error_in_test(ex)
        finally:
            executor.shutdown(wait=False)

        return None