def METHOD_NAME(
    self,
    job_file: str,
    environment: Environment,
    test_result: TestResult,
) -> None:
    nodes = [cast(RemoteNode, node) for node in environment.nodes.list()]
    procs: List[Process] = []
    job_file_name = Path(job_file).name
    test_status = TestStatus.QUEUED
    test_msg = ""
    try:
        for node in nodes:
            remote_working_dir = node.working_path / "stress_ng_jobs"
            node.shell.mkdir(remote_working_dir, exist_ok=True)
            job_file_dest = remote_working_dir / job_file_name
            node.shell.copy(PurePath(job_file), job_file_dest)
            procs.append(node.tools[StressNg].launch_job_async(str(job_file_dest)))
        for proc in procs:
            proc.wait_result(expected_exit_code=0)
        test_status = TestStatus.PASSED
    except Exception as e:
        test_status = TestStatus.FAILED
        test_msg = repr(e)
    finally:
        self._send_subtest_msg(
            test_result,
            environment,
            job_file_name,
            test_status,
            test_msg,
        )
        self._check_panic(nodes)