[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