[svn r63154] use "node" instead of "host" everywhere
--HG-- branch : trunk
This commit is contained in:
parent
afca655202
commit
cbc15b91fa
|
@ -9,6 +9,7 @@ from py.__.test import event
|
||||||
from py.__.test.runner import basic_run_report, basic_collect_report
|
from py.__.test.runner import basic_run_report, basic_collect_report
|
||||||
from py.__.test.session import Session
|
from py.__.test.session import Session
|
||||||
from py.__.test import outcome
|
from py.__.test import outcome
|
||||||
|
from py.__.test.dsession.nodemanage import NodeManager
|
||||||
|
|
||||||
import Queue
|
import Queue
|
||||||
|
|
||||||
|
@ -97,9 +98,9 @@ class DSession(Session):
|
||||||
def main(self, colitems=None):
|
def main(self, colitems=None):
|
||||||
colitems = self.getinitialitems(colitems)
|
colitems = self.getinitialitems(colitems)
|
||||||
self.sessionstarts()
|
self.sessionstarts()
|
||||||
self.setup_nodes()
|
self.setup()
|
||||||
exitstatus = self.loop(colitems)
|
exitstatus = self.loop(colitems)
|
||||||
self.teardown_nodes()
|
self.teardown()
|
||||||
self.sessionfinishes()
|
self.sessionfinishes()
|
||||||
return exitstatus
|
return exitstatus
|
||||||
|
|
||||||
|
@ -235,15 +236,14 @@ class DSession(Session):
|
||||||
rep = event.ItemTestReport(item, when="???", excinfo=longrepr)
|
rep = event.ItemTestReport(item, when="???", excinfo=longrepr)
|
||||||
self.bus.notify("itemtestreport", rep)
|
self.bus.notify("itemtestreport", rep)
|
||||||
|
|
||||||
def setup_nodes(self):
|
def setup(self):
|
||||||
""" setup any neccessary resources ahead of the test run. """
|
""" setup any neccessary resources ahead of the test run. """
|
||||||
from py.__.test.dsession.hostmanage import HostManager
|
self.nodemanager = NodeManager(self.config)
|
||||||
self.hm = HostManager(self.config)
|
self.nodemanager.setup_nodes(putevent=self.queue.put)
|
||||||
self.hm.setup_hosts(putevent=self.queue.put)
|
|
||||||
|
|
||||||
def teardown_nodes(self):
|
def teardown(self):
|
||||||
""" teardown any resources after a test run. """
|
""" teardown any resources after a test run. """
|
||||||
self.hm.teardown_hosts()
|
self.nodemanager.teardown_nodes()
|
||||||
|
|
||||||
# debugging function
|
# debugging function
|
||||||
def dump_picklestate(item):
|
def dump_picklestate(item):
|
||||||
|
|
|
@ -40,13 +40,13 @@ def getconfigroots(config):
|
||||||
roots.append(pydir)
|
roots.append(pydir)
|
||||||
return roots
|
return roots
|
||||||
|
|
||||||
class HostManager(object):
|
class NodeManager(object):
|
||||||
def __init__(self, config, hosts=None):
|
def __init__(self, config, specs=None):
|
||||||
self.config = config
|
self.config = config
|
||||||
if hosts is None:
|
if specs is None:
|
||||||
hosts = getxspecs(self.config)
|
specs = getxspecs(self.config)
|
||||||
self.roots = getconfigroots(config)
|
self.roots = getconfigroots(config)
|
||||||
self.gwmanager = GatewayManager(hosts)
|
self.gwmanager = GatewayManager(specs)
|
||||||
self.nodes = []
|
self.nodes = []
|
||||||
|
|
||||||
def makegateways(self):
|
def makegateways(self):
|
||||||
|
@ -60,9 +60,9 @@ class HostManager(object):
|
||||||
self.gwmanager.makegateways()
|
self.gwmanager.makegateways()
|
||||||
finally:
|
finally:
|
||||||
old.chdir()
|
old.chdir()
|
||||||
self.trace_hoststatus()
|
self.trace_nodestatus()
|
||||||
|
|
||||||
def trace_hoststatus(self):
|
def trace_nodestatus(self):
|
||||||
if self.config.option.debug:
|
if self.config.option.debug:
|
||||||
for ch, result in self.gwmanager.multi_exec("""
|
for ch, result in self.gwmanager.multi_exec("""
|
||||||
import sys, os
|
import sys, os
|
||||||
|
@ -97,9 +97,9 @@ class HostManager(object):
|
||||||
self.config.bus.notify("rsyncfinished", event.RsyncFinished())
|
self.config.bus.notify("rsyncfinished", event.RsyncFinished())
|
||||||
|
|
||||||
def trace(self, msg):
|
def trace(self, msg):
|
||||||
self.config.bus.notify("trace", "testhostmanage", msg)
|
self.config.bus.notify("trace", "nodemanage", msg)
|
||||||
|
|
||||||
def setup_hosts(self, putevent):
|
def setup_nodes(self, putevent):
|
||||||
self.rsync_roots()
|
self.rsync_roots()
|
||||||
nice = self.config.getvalue("dist_nicelevel")
|
nice = self.config.getvalue("dist_nicelevel")
|
||||||
if nice != 0:
|
if nice != 0:
|
||||||
|
@ -109,7 +109,7 @@ class HostManager(object):
|
||||||
os.nice(%r)
|
os.nice(%r)
|
||||||
""" % nice).waitclose()
|
""" % nice).waitclose()
|
||||||
|
|
||||||
self.trace_hoststatus()
|
self.trace_nodestatus()
|
||||||
multigw = self.gwmanager.getgateways(inplacelocal=False, remote=True)
|
multigw = self.gwmanager.getgateways(inplacelocal=False, remote=True)
|
||||||
multigw.remote_exec("""
|
multigw.remote_exec("""
|
||||||
import os, sys
|
import os, sys
|
||||||
|
@ -120,6 +120,6 @@ class HostManager(object):
|
||||||
node = MasterNode(gateway, self.config, putevent)
|
node = MasterNode(gateway, self.config, putevent)
|
||||||
self.nodes.append(node)
|
self.nodes.append(node)
|
||||||
|
|
||||||
def teardown_hosts(self):
|
def teardown_nodes(self):
|
||||||
# XXX teardown nodes?
|
# XXX teardown nodes?
|
||||||
self.gwmanager.exit()
|
self.gwmanager.exit()
|
|
@ -49,9 +49,10 @@ class MySetup:
|
||||||
return self.node
|
return self.node
|
||||||
|
|
||||||
def finalize(self):
|
def finalize(self):
|
||||||
if hasattr(self, 'host'):
|
if hasattr(self, 'node'):
|
||||||
print "exiting:", self.gateway
|
gw = self.node.gateway
|
||||||
self.gateway.exit()
|
print "exiting:", gw
|
||||||
|
gw.exit()
|
||||||
|
|
||||||
def pytest_pyfuncarg_mysetup(pyfuncitem):
|
def pytest_pyfuncarg_mysetup(pyfuncitem):
|
||||||
mysetup = MySetup(pyfuncitem)
|
mysetup = MySetup(pyfuncitem)
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import py
|
import py
|
||||||
from py.__.test.dsession.hostmanage import HostManager, getxspecs, getconfigroots
|
from py.__.test.dsession.nodemanage import NodeManager, getxspecs, getconfigroots
|
||||||
|
|
||||||
from py.__.test import event
|
from py.__.test import event
|
||||||
|
|
||||||
|
@ -13,15 +13,15 @@ def pytest_pyfuncarg_dest(pyfuncitem):
|
||||||
dest = py.test.ensuretemp(pyfuncitem.getmodpath()).mkdir("dest")
|
dest = py.test.ensuretemp(pyfuncitem.getmodpath()).mkdir("dest")
|
||||||
return dest
|
return dest
|
||||||
|
|
||||||
class TestHostManager:
|
class TestNodeManager:
|
||||||
@py.test.mark.xfail("consider / forbid implicit rsyncdirs?")
|
@py.test.mark.xfail("consider / forbid implicit rsyncdirs?")
|
||||||
def test_hostmanager_rsync_roots_no_roots(self, source, dest):
|
def test_rsync_roots_no_roots(self, source, dest):
|
||||||
source.ensure("dir1", "file1").write("hello")
|
source.ensure("dir1", "file1").write("hello")
|
||||||
config = py.test.config._reparse([source])
|
config = py.test.config._reparse([source])
|
||||||
hm = HostManager(config, hosts=["popen::%s" % dest])
|
nodemanager = NodeManager(config, ["popen//chdir=%s" % dest])
|
||||||
assert hm.config.topdir == source == config.topdir
|
assert nodemanager.config.topdir == source == config.topdir
|
||||||
hm.rsync_roots()
|
nodemanager.rsync_roots()
|
||||||
p, = hm.gwmanager.multi_exec("import os ; channel.send(os.getcwd())").receive_each()
|
p, = nodemanager.gwmanager.multi_exec("import os ; channel.send(os.getcwd())").receive_each()
|
||||||
p = py.path.local(p)
|
p = py.path.local(p)
|
||||||
print "remote curdir", p
|
print "remote curdir", p
|
||||||
assert p == dest.join(config.topdir.basename)
|
assert p == dest.join(config.topdir.basename)
|
||||||
|
@ -34,13 +34,13 @@ class TestHostManager:
|
||||||
dir2.ensure("hello")
|
dir2.ensure("hello")
|
||||||
for rsyncroot in (dir1, source):
|
for rsyncroot in (dir1, source):
|
||||||
dest.remove()
|
dest.remove()
|
||||||
hm = HostManager(testdir.parseconfig(
|
nodemanager = NodeManager(testdir.parseconfig(
|
||||||
"--tx", "popen//chdir=%s" % dest,
|
"--tx", "popen//chdir=%s" % dest,
|
||||||
"--rsyncdirs", rsyncroot,
|
"--rsyncdirs", rsyncroot,
|
||||||
source,
|
source,
|
||||||
))
|
))
|
||||||
assert hm.config.topdir == source
|
assert nodemanager.config.topdir == source
|
||||||
hm.rsync_roots()
|
nodemanager.rsync_roots()
|
||||||
if rsyncroot == source:
|
if rsyncroot == source:
|
||||||
dest = dest.join("source")
|
dest = dest.join("source")
|
||||||
assert dest.join("dir1").check()
|
assert dest.join("dir1").check()
|
||||||
|
@ -56,9 +56,8 @@ class TestHostManager:
|
||||||
rsyncdirs = ['dir1/dir2']
|
rsyncdirs = ['dir1/dir2']
|
||||||
"""))
|
"""))
|
||||||
session = py.test.config._reparse([source]).initsession()
|
session = py.test.config._reparse([source]).initsession()
|
||||||
hm = HostManager(session.config,
|
nodemanager = NodeManager(session.config, ["popen//chdir=%s" % dest])
|
||||||
hosts=["popen//chdir=%s" % dest])
|
nodemanager.rsync_roots()
|
||||||
hm.rsync_roots()
|
|
||||||
assert dest.join("dir2").check()
|
assert dest.join("dir2").check()
|
||||||
assert not dest.join("dir1").check()
|
assert not dest.join("dir1").check()
|
||||||
assert not dest.join("bogus").check()
|
assert not dest.join("bogus").check()
|
||||||
|
@ -73,41 +72,41 @@ class TestHostManager:
|
||||||
rsyncignore = ['dir1/dir2', 'dir5/dir6']
|
rsyncignore = ['dir1/dir2', 'dir5/dir6']
|
||||||
"""))
|
"""))
|
||||||
session = py.test.config._reparse([source]).initsession()
|
session = py.test.config._reparse([source]).initsession()
|
||||||
hm = HostManager(session.config,
|
nodemanager = NodeManager(session.config,
|
||||||
hosts=["popen//chdir=%s" % dest])
|
["popen//chdir=%s" % dest])
|
||||||
hm.rsync_roots()
|
nodemanager.rsync_roots()
|
||||||
assert dest.join("dir1").check()
|
assert dest.join("dir1").check()
|
||||||
assert not dest.join("dir1", "dir2").check()
|
assert not dest.join("dir1", "dir2").check()
|
||||||
assert dest.join("dir5","file").check()
|
assert dest.join("dir5","file").check()
|
||||||
assert not dest.join("dir6").check()
|
assert not dest.join("dir6").check()
|
||||||
|
|
||||||
def test_optimise_popen(self, source, dest):
|
def test_optimise_popen(self, source, dest):
|
||||||
hosts = ["popen"] * 3
|
specs = ["popen"] * 3
|
||||||
source.join("conftest.py").write("rsyncdirs = ['a']")
|
source.join("conftest.py").write("rsyncdirs = ['a']")
|
||||||
source.ensure('a', dir=1)
|
source.ensure('a', dir=1)
|
||||||
config = py.test.config._reparse([source])
|
config = py.test.config._reparse([source])
|
||||||
hm = HostManager(config, hosts=hosts)
|
nodemanager = NodeManager(config, specs)
|
||||||
hm.rsync_roots()
|
nodemanager.rsync_roots()
|
||||||
for gwspec in hm.gwmanager.specs:
|
for gwspec in nodemanager.gwmanager.specs:
|
||||||
assert gwspec._samefilesystem()
|
assert gwspec._samefilesystem()
|
||||||
assert not gwspec.chdir
|
assert not gwspec.chdir
|
||||||
|
|
||||||
def test_setup_hosts_DEBUG(self, source, EventRecorder):
|
def test_setup_DEBUG(self, source, EventRecorder):
|
||||||
hosts = ["popen"] * 2
|
specs = ["popen"] * 2
|
||||||
source.join("conftest.py").write("rsyncdirs = ['a']")
|
source.join("conftest.py").write("rsyncdirs = ['a']")
|
||||||
source.ensure('a', dir=1)
|
source.ensure('a', dir=1)
|
||||||
config = py.test.config._reparse([source, '--debug'])
|
config = py.test.config._reparse([source, '--debug'])
|
||||||
assert config.option.debug
|
assert config.option.debug
|
||||||
hm = HostManager(config, hosts=hosts)
|
nodemanager = NodeManager(config, specs)
|
||||||
evrec = EventRecorder(config.bus, debug=True)
|
evrec = EventRecorder(config.bus, debug=True)
|
||||||
hm.setup_hosts(putevent=[].append)
|
nodemanager.setup_nodes(putevent=[].append)
|
||||||
for host in hm.gwmanager.specs:
|
for spec in nodemanager.gwmanager.specs:
|
||||||
l = evrec.getnamed("trace")
|
l = evrec.getnamed("trace")
|
||||||
print evrec.events
|
print evrec.events
|
||||||
assert l
|
assert l
|
||||||
hm.teardown_hosts()
|
nodemanager.teardown_nodes()
|
||||||
|
|
||||||
def test_ssh_setup_hosts(self, specssh, testdir):
|
def test_ssh_setup_nodes(self, specssh, testdir):
|
||||||
testdir.makepyfile(__init__="", test_x="""
|
testdir.makepyfile(__init__="", test_x="""
|
||||||
def test_one():
|
def test_one():
|
||||||
pass
|
pass
|
Loading…
Reference in New Issue