コード例 #1
0
    def _run_test(self, test_nodeid: nodeid.Nodeid):
        result_queue: "multiprocessing.Queue[Union[result_tree.Node, plugin.TestReport, int]]" = (
            multiprocessing.Queue())
        proc = multiprocessing.Process(
            target=plugin.run_test,
            args=(test_nodeid, result_queue, self._directory),
        )
        LOGGER.debug("running test %s", nodeid)
        proc.start()

        run_tree = eventlet_utils.get_queue_noblock(result_queue)
        LOGGER.debug("got run_tree %s", run_tree)

        self.result_tree.merge(run_tree, test_nodeid)
        node = self._node_index[test_nodeid]
        if node.status == result_tree.TestState.INIT:
            node.status = result_tree.TestState.RUNNING

        self._send_update()

        eventlet.sleep()

        while True:
            val = eventlet_utils.get_queue_noblock(result_queue)
            if val == plugin.DONE:
                LOGGER.debug("DONE received, breaking")
                break
            LOGGER.debug("adding test report %s", val)
            self._add_test_report(val)
            self._send_update()

        LOGGER.debug("joining child proc...")
        proc.join()
        LOGGER.debug("child proc joined")
コード例 #2
0
 def _watch_fs_events(self, queue: multiprocessing.Queue):
     while True:
         event = eventlet_utils.get_queue_noblock(queue)
         try:
             self._handle_fs_event(event)
         except Exception:
             LOGGER.exception("unexpected error while handling filesystem event")
コード例 #3
0
ファイル: plugin.py プロジェクト: ryanc414/pytest_commander
def collect_path(
    path: str,
    root_dir: str,
) -> result_tree.BranchNode:
    if not path.startswith(root_dir):
        raise ValueError(
            f"path {path} does not appear to be within root dir {root_dir}")

    mp_queue: "multiprocessing.Queue[Union[result_tree.Node, TestReport, int]]" = (
        multiprocessing.Queue())
    proc = multiprocessing.Process(target=_collect_path,
                                   args=(path, root_dir, mp_queue))
    proc.start()
    res = eventlet_utils.get_queue_noblock(mp_queue)
    proc.join()
    if not isinstance(res, result_tree.BranchNode):
        raise TypeError(f"unexpected return from queue: {res}")
    return cast(result_tree.BranchNode, res)