[svn r63154] use "node" instead of "host" everywhere

--HG--
branch : trunk
This commit is contained in:
hpk 2009-03-20 20:33:05 +01:00
parent afca655202
commit cbc15b91fa
4 changed files with 49 additions and 49 deletions

View File

@ -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):

View File

@ -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()

View File

@ -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)

View File

@ -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