当前位置: 首页>>代码示例>>Python>>正文


Python NodeManager.setup_nodes方法代码示例

本文整理汇总了Python中xdist.slavemanage.NodeManager.setup_nodes方法的典型用法代码示例。如果您正苦于以下问题:Python NodeManager.setup_nodes方法的具体用法?Python NodeManager.setup_nodes怎么用?Python NodeManager.setup_nodes使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在xdist.slavemanage.NodeManager的用法示例。


在下文中一共展示了NodeManager.setup_nodes方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: test_optimise_popen

# 需要导入模块: from xdist.slavemanage import NodeManager [as 别名]
# 或者: from xdist.slavemanage.NodeManager import setup_nodes [as 别名]
 def test_optimise_popen(self, testdir, mysetup, slavecontroller):
     source = mysetup.source
     specs = ["popen"] * 3
     source.join("conftest.py").write("rsyncdirs = ['a']")
     source.ensure('a', dir=1)
     config = testdir.parseconfig(source)
     nodemanager = NodeManager(config, specs)
     nodemanager.setup_nodes(None)  # calls .rysnc_roots()
     for gwspec in nodemanager.specs:
         assert gwspec._samefilesystem()
         assert not gwspec.chdir
开发者ID:epeden,项目名称:pytest-xdist,代码行数:13,代码来源:test_slavemanage.py

示例2: test_rsync_same_popen_twice

# 需要导入模块: from xdist.slavemanage import NodeManager [as 别名]
# 或者: from xdist.slavemanage.NodeManager import setup_nodes [as 别名]
 def test_rsync_same_popen_twice(self, config, mysetup, hookrecorder,
                                 slavecontroller):
     source, dest = mysetup.source, mysetup.dest
     hm = NodeManager(config, ["popen//chdir=%s" % dest] * 2)
     hm.roots = []
     hm.setup_nodes(None)
     source.ensure("dir1", "dir2", "hello")
     gw = hm.group[0]
     hm.rsync(gw, source)
     call = hookrecorder.popcall("pytest_xdist_rsyncstart")
     assert call.source == source
     assert len(call.gateways) == 1
     assert call.gateways[0] in hm.group
     call = hookrecorder.popcall("pytest_xdist_rsyncfinish")
开发者ID:epeden,项目名称:pytest-xdist,代码行数:16,代码来源:test_slavemanage.py

示例3: test_rsync_popen_with_path

# 需要导入模块: from xdist.slavemanage import NodeManager [as 别名]
# 或者: from xdist.slavemanage.NodeManager import setup_nodes [as 别名]
 def test_rsync_popen_with_path(self, config, mysetup, slavecontroller):
     source, dest = mysetup.source, mysetup.dest
     hm = NodeManager(config, ["popen//chdir=%s" % dest] * 1)
     hm.setup_nodes(None)
     source.ensure("dir1", "dir2", "hello")
     l = []
     for gw in hm.group:
         hm.rsync(gw, source, notify=lambda *args: l.append(args))
     assert len(l) == 1
     assert l[0] == ("rsyncrootready", hm.group['gw0'].spec, source)
     hm.teardown_nodes()
     dest = dest.join(source.basename)
     assert dest.join("dir1").check()
     assert dest.join("dir1", "dir2").check()
     assert dest.join("dir1", "dir2", 'hello').check()
开发者ID:epeden,项目名称:pytest-xdist,代码行数:17,代码来源:test_slavemanage.py

示例4: test_popen_makegateway_events

# 需要导入模块: from xdist.slavemanage import NodeManager [as 别名]
# 或者: from xdist.slavemanage.NodeManager import setup_nodes [as 别名]
    def test_popen_makegateway_events(self, config, hookrecorder,
                                      slavecontroller):
        hm = NodeManager(config, ["popen"] * 2)
        hm.setup_nodes(None)
        call = hookrecorder.popcall("pytest_xdist_setupnodes")
        assert len(call.specs) == 2

        call = hookrecorder.popcall("pytest_xdist_newgateway")
        assert call.gateway.spec == execnet.XSpec("popen")
        assert call.gateway.id == "gw0"
        call = hookrecorder.popcall("pytest_xdist_newgateway")
        assert call.gateway.id == "gw1"
        assert len(hm.group) == 2
        hm.teardown_nodes()
        assert not len(hm.group)
开发者ID:epeden,项目名称:pytest-xdist,代码行数:17,代码来源:test_slavemanage.py

示例5: test_init_rsync_roots

# 需要导入模块: from xdist.slavemanage import NodeManager [as 别名]
# 或者: from xdist.slavemanage.NodeManager import setup_nodes [as 别名]
 def test_init_rsync_roots(self, testdir, mysetup, slavecontroller):
     source, dest = mysetup.source, mysetup.dest
     dir2 = source.ensure("dir1", "dir2", dir=1)
     source.ensure("dir1", "somefile", dir=1)
     dir2.ensure("hello")
     source.ensure("bogusdir", "file")
     source.join("tox.ini").write(py.std.textwrap.dedent("""
         [pytest]
         rsyncdirs=dir1/dir2
     """))
     config = testdir.parseconfig(source)
     nodemanager = NodeManager(config, ["popen//chdir=%s" % dest])
     nodemanager.setup_nodes(None)  # calls .rsync_roots()
     assert dest.join("dir2").check()
     assert not dest.join("dir1").check()
     assert not dest.join("bogus").check()
开发者ID:epeden,项目名称:pytest-xdist,代码行数:18,代码来源:test_slavemanage.py

示例6: test_popen_rsync_subdir

# 需要导入模块: from xdist.slavemanage import NodeManager [as 别名]
# 或者: from xdist.slavemanage.NodeManager import setup_nodes [as 别名]
 def test_popen_rsync_subdir(self, testdir, mysetup, slavecontroller):
     source, dest = mysetup.source, mysetup.dest
     dir1 = mysetup.source.mkdir("dir1")
     dir2 = dir1.mkdir("dir2")
     dir2.ensure("hello")
     for rsyncroot in (dir1, source):
         dest.remove()
         nodemanager = NodeManager(testdir.parseconfig(
             "--tx", "popen//chdir=%s" % dest, "--rsyncdir", rsyncroot,
             source, ))
         nodemanager.setup_nodes(None)  # calls .rsync_roots()
         if rsyncroot == source:
             dest = dest.join("source")
         assert dest.join("dir1").check()
         assert dest.join("dir1", "dir2").check()
         assert dest.join("dir1", "dir2", 'hello').check()
         nodemanager.teardown_nodes()
开发者ID:epeden,项目名称:pytest-xdist,代码行数:19,代码来源:test_slavemanage.py

示例7: test_rsyncignore

# 需要导入模块: from xdist.slavemanage import NodeManager [as 别名]
# 或者: from xdist.slavemanage.NodeManager import setup_nodes [as 别名]
 def test_rsyncignore(self, testdir, mysetup, slavecontroller):
     source, dest = mysetup.source, mysetup.dest
     dir2 = source.ensure("dir1", "dir2", dir=1)
     source.ensure("dir5", "dir6", "bogus")
     source.ensure("dir5", "file")
     dir2.ensure("hello")
     source.ensure("foo", "bar")
     source.ensure("bar", "foo")
     source.join("tox.ini").write(py.std.textwrap.dedent("""
         [pytest]
         rsyncdirs = dir1 dir5
         rsyncignore = dir1/dir2 dir5/dir6 foo*
     """))
     config = testdir.parseconfig(source)
     config.option.rsyncignore = ['bar']
     nodemanager = NodeManager(config, ["popen//chdir=%s" % dest])
     nodemanager.setup_nodes(None)  # calls .rsync_roots()
     assert dest.join("dir1").check()
     assert not dest.join("dir1", "dir2").check()
     assert dest.join("dir5", "file").check()
     assert not dest.join("dir6").check()
     assert not dest.join('foo').check()
     assert not dest.join('bar').check()
开发者ID:epeden,项目名称:pytest-xdist,代码行数:25,代码来源:test_slavemanage.py

示例8: test_popens_rsync

# 需要导入模块: from xdist.slavemanage import NodeManager [as 别名]
# 或者: from xdist.slavemanage.NodeManager import setup_nodes [as 别名]
    def test_popens_rsync(self, config, mysetup, slavecontroller):
        source = mysetup.source
        hm = NodeManager(config, ["popen"] * 2)
        hm.setup_nodes(None)
        assert len(hm.group) == 2
        for gw in hm.group:

            class pseudoexec:
                args = []

                def __init__(self, *args):
                    self.args.extend(args)

                def waitclose(self):
                    pass

            gw.remote_exec = pseudoexec
        l = []
        for gw in hm.group:
            hm.rsync(gw, source, notify=lambda *args: l.append(args))
        assert not l
        hm.teardown_nodes()
        assert not len(hm.group)
        assert "sys.path.insert" in gw.remote_exec.args[0]
开发者ID:epeden,项目名称:pytest-xdist,代码行数:26,代码来源:test_slavemanage.py

示例9: __init__

# 需要导入模块: from xdist.slavemanage import NodeManager [as 别名]
# 或者: from xdist.slavemanage.NodeManager import setup_nodes [as 别名]
class DSession:
    def __init__(self, config):
        self.config = config
        self.log = py.log.Producer("dsession")
        if not config.option.debug:
            py.log.setconsumer(self.log._keywords, None)
        self.shuttingdown = False
        self.countfailures = 0
        self.maxfail = config.getvalue("maxfail")
        self.queue = queue.Queue()
        try:
            self.terminal = config.pluginmanager.getplugin("terminalreporter")
        except KeyError:
            self.terminal = None
        else:
            self.trdist = TerminalDistReporter(config)
            config.pluginmanager.register(self.trdist, "terminaldistreporter")

    def report_line(self, line):
        if self.terminal and self.config.option.verbose >= 0:
            self.terminal.write_line(line)

    @pytest.mark.trylast
    def pytest_sessionstart(self, session):
        self.nodemanager = NodeManager(self.config)
        self.nodemanager.setup_nodes(putevent=self.queue.put)

    def pytest_sessionfinish(self, session):
        """ teardown any resources after a test run. """
        nm = getattr(self, "nodemanager", None)  # if not fully initialized
        if nm is not None:
            nm.teardown_nodes()

    def pytest_collection(self):
        # prohibit collection of test items in master process
        return True

    def pytest_runtestloop(self):
        numnodes = len(self.nodemanager.specs)
        dist = self.config.getvalue("dist")
        if dist == "load":
            self.sched = LoadScheduling(numnodes, log=self.log)
        elif dist == "each":
            self.sched = EachScheduling(numnodes, log=self.log)
        else:
            assert 0, dist
        self.shouldstop = False
        self.session_finished = False
        while not self.session_finished:
            self.loop_once()
            if self.shouldstop:
                raise Interrupted(str(self.shouldstop))
        return True

    def loop_once(self):
        """ process one callback from one of the slaves. """
        while 1:
            try:
                eventcall = self.queue.get(timeout=2.0)
                break
            except queue.Empty:
                continue
        callname, kwargs = eventcall
        assert callname, kwargs
        method = "slave_" + callname
        call = getattr(self, method)
        self.log("calling method: %s(**%s)" % (method, kwargs))
        call(**kwargs)
        if self.sched.tests_finished():
            self.triggershutdown()

    #
    # callbacks for processing events from slaves
    #

    def slave_slaveready(self, node, slaveinfo):
        node.slaveinfo = slaveinfo
        node.slaveinfo["id"] = node.gateway.id
        node.slaveinfo["spec"] = node.gateway.spec
        self.config.hook.pytest_testnodeready(node=node)
        self.sched.addnode(node)
        if self.shuttingdown:
            node.shutdown()

    def slave_slavefinished(self, node):
        self.config.hook.pytest_testnodedown(node=node, error=None)
        if node.slaveoutput["exitstatus"] == 2:  # keyboard-interrupt
            self.shouldstop = "%s received keyboard-interrupt" % (node,)
            self.slave_errordown(node, "keyboard-interrupt")
            return
        crashitem = self.sched.remove_node(node)
        # assert not crashitem, (crashitem, node)
        if self.shuttingdown and not self.sched.hasnodes():
            self.session_finished = True

    def slave_errordown(self, node, error):
        self.config.hook.pytest_testnodedown(node=node, error=error)
        try:
            crashitem = self.sched.remove_node(node)
        except KeyError:
#.........这里部分代码省略.........
开发者ID:chetan51,项目名称:nupic-linux64,代码行数:103,代码来源:dsession.py

示例10: __init__

# 需要导入模块: from xdist.slavemanage import NodeManager [as 别名]
# 或者: from xdist.slavemanage.NodeManager import setup_nodes [as 别名]
class DSession:
    """A py.test plugin which runs a distributed test session

    At the beginning of the test session this creates a NodeManager
    instance which creates and starts all nodes.  Nodes then emit
    events processed in the pytest_runtestloop hook using the slave_*
    methods.

    Once a node is started it will automatically start running the
    py.test mainloop with some custom hooks.  This means a node
    automatically starts collecting tests.  Once tests are collected
    it will wait for instructions.
    """
    def __init__(self, config):
        self.config = config
        self.log = py.log.Producer("dsession")
        if not config.option.debug:
            py.log.setconsumer(self.log._keywords, None)
        self.shuttingdown = False
        self.countfailures = 0
        self.maxfail = config.getvalue("maxfail")
        self.queue = queue.Queue()
        self._session = None
        self._failed_collection_errors = {}
        self._active_nodes = set()
        self._failed_nodes_count = 0
        self._max_slave_restart = self.config.getoption('max_slave_restart')
        if self._max_slave_restart is not None:
            self._max_slave_restart = int(self._max_slave_restart)
        try:
            self.terminal = config.pluginmanager.getplugin("terminalreporter")
        except KeyError:
            self.terminal = None
        else:
            self.trdist = TerminalDistReporter(config)
            config.pluginmanager.register(self.trdist, "terminaldistreporter")

    @property
    def session_finished(self):
        """Return True if the distributed session has finished

        This means all nodes have executed all test items.  This is
        used to by pytest_runtestloop to break out of it's loop.
        """
        return bool(self.shuttingdown and not self._active_nodes)

    def report_line(self, line):
        if self.terminal and self.config.option.verbose >= 0:
            self.terminal.write_line(line)

    @pytest.mark.trylast
    def pytest_sessionstart(self, session):
        """Creates and starts the nodes.

        The nodes are setup to put their events onto self.queue.  As
        soon as nodes start they will emit the slave_slaveready event.
        """
        self.nodemanager = NodeManager(self.config)
        nodes = self.nodemanager.setup_nodes(putevent=self.queue.put)
        self._active_nodes.update(nodes)
        self._session = session

    def pytest_sessionfinish(self, session):
        """Shutdown all nodes."""
        nm = getattr(self, 'nodemanager', None)  # if not fully initialized
        if nm is not None:
            nm.teardown_nodes()
        self._session = None

    def pytest_collection(self):
        # prohibit collection of test items in master process
        return True

    def pytest_runtestloop(self):
        numnodes = len(self.nodemanager.specs)
        dist = self.config.getvalue("dist")
        if dist == "load":
            self.sched = LoadScheduling(numnodes, log=self.log,
                                        config=self.config)
        elif dist == "each":
            self.sched = EachScheduling(numnodes, log=self.log)
        else:
            assert 0, dist
        self.shouldstop = False
        while not self.session_finished:
            self.loop_once()
            if self.shouldstop:
                raise Interrupted(str(self.shouldstop))
        return True

    def loop_once(self):
        """Process one callback from one of the slaves."""
        while 1:
            try:
                eventcall = self.queue.get(timeout=2.0)
                break
            except queue.Empty:
                continue
        callname, kwargs = eventcall
        assert callname, kwargs
#.........这里部分代码省略.........
开发者ID:nchammas,项目名称:pytest-xdist,代码行数:103,代码来源:dsession.py


注:本文中的xdist.slavemanage.NodeManager.setup_nodes方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。