[py-svn] r56966 - in py/branch/event/py/test2/rsession: . testing
hpk at codespeak.net
hpk at codespeak.net
Mon Aug 4 13:38:26 CEST 2008
Author: hpk
Date: Mon Aug 4 13:38:25 2008
New Revision: 56966
Modified:
py/branch/event/py/test2/rsession/masterslave.py
py/branch/event/py/test2/rsession/testing/test_masterslave.py
Log:
pickle instead of marshal events for dist sessions
Modified: py/branch/event/py/test2/rsession/masterslave.py
==============================================================================
--- py/branch/event/py/test2/rsession/masterslave.py (original)
+++ py/branch/event/py/test2/rsession/masterslave.py Mon Aug 4 13:38:25 2008
@@ -13,28 +13,24 @@
self.channel.setcallback(self._callback)
self.pending = []
- def _callback(self, outcomestring):
- if outcomestring is None:
+ def _callback(self, ev):
+ if ev is None:
self.notify(repevent.HostDown(self.host))
return
item = self.pending.pop()
- ev = repevent.ItemTestReport.fromdumps(outcomestring)
self.notify(ev)
def send(self, item):
try:
- if item is None:
- self.channel.send(None)
- else:
- self.channel.send(item._get_collector_trail())
- self.pending.insert(0, item)
- self.notify(repevent.SendItem(self.host, item))
+ self.channel.send(item)
except IOError:
+ # XXX do proper rescheduling on io errors
print "Sending error, channel IOError"
print self.channel._getremoteerror()
- # XXX: this should go as soon as we'll have proper detection
- # of hanging nodes and such
raise
+ if item is not None:
+ self.pending.insert(0, item)
+ self.notify(repevent.SendItem(self.host, item))
def send_and_receive_pickled_config(channel, config, remote_topdir):
channel.send((config, remote_topdir))
@@ -80,12 +76,10 @@
def slave_main(receive, send, config):
while 1:
- itemspec = receive()
- if itemspec is None:
+ item = receive()
+ if item is None:
send(None)
break
- item = config._getcollector(itemspec)
runner = item._getrunner()
testrep = runner(item, item._setupstate, item._config._getcapture)
- send(testrep.dumps())
-
+ send(testrep)
Modified: py/branch/event/py/test2/rsession/testing/test_masterslave.py
==============================================================================
--- py/branch/event/py/test2/rsession/testing/test_masterslave.py (original)
+++ py/branch/event/py/test2/rsession/testing/test_masterslave.py Mon Aug 4 13:38:25 2008
@@ -75,10 +75,14 @@
def test_send_one(self):
queue = self.makereportqueue()
+ item = self.getfunc("passed")
self.node.send(self.getfunc("passed"))
event = queue.get(timeout=2.0)
assert event.passed
assert not self.node.pending
+ assert event.trail == item._get_collector_trail()
+ #assert event.item == item
+ #assert event.item is not item
def test_send_multiple(self):
queue = self.makereportqueue()
More information about the pytest-commit
mailing list