fix remaining execnet 3k issues until all tests pass

--HG--
branch : trunk
This commit is contained in:
holger krekel 2009-09-04 16:51:29 +02:00
parent 45b98d4915
commit 5851471009
5 changed files with 20 additions and 17 deletions

View File

@ -147,6 +147,7 @@ initpkg(__name__,
'builtin.print_' : ('./builtin/builtin31.py', 'print_'), 'builtin.print_' : ('./builtin/builtin31.py', 'print_'),
'builtin._reraise' : ('./builtin/builtin31.py', '_reraise'), 'builtin._reraise' : ('./builtin/builtin31.py', '_reraise'),
'builtin.exec_' : ('./builtin/builtin31.py', 'exec_'), 'builtin.exec_' : ('./builtin/builtin31.py', 'exec_'),
'builtin.intern' : ('./builtin/builtin31.py', 'intern'),
'builtin._basestring' : ('./builtin/builtin31.py', '_basestring'), 'builtin._basestring' : ('./builtin/builtin31.py', '_basestring'),
'builtin._totext' : ('./builtin/builtin31.py', '_totext'), 'builtin._totext' : ('./builtin/builtin31.py', '_totext'),
'builtin._isbytes' : ('./builtin/builtin31.py', '_isbytes'), 'builtin._isbytes' : ('./builtin/builtin31.py', '_isbytes'),

View File

@ -63,26 +63,27 @@ class GatewayManager:
""" perform rsync to all remote hosts. """ perform rsync to all remote hosts.
""" """
rsync = HostRSync(source, verbose=verbose, ignores=ignores) rsync = HostRSync(source, verbose=verbose, ignores=ignores)
seen = {} seen = py.builtin.set()
gateways = []
for gateway in self.gateways: for gateway in self.gateways:
spec = gateway.spec spec = gateway.spec
if not spec._samefilesystem(): if not spec._samefilesystem():
if spec in seen: if spec not in seen:
continue
def finished(): def finished():
if notify: if notify:
notify("rsyncrootready", spec, source) notify("rsyncrootready", spec, source)
rsync.add_target_host(gateway, finished=finished) rsync.add_target_host(gateway, finished=finished)
seen[spec] = gateway seen.add(spec)
gateways.append(gateway)
if seen: if seen:
self.hook.pyexecnet_gwmanage_rsyncstart( self.hook.pyexecnet_gwmanage_rsyncstart(
source=source, source=source,
gateways=seen.values(), gateways=gateways,
) )
rsync.send() rsync.send()
self.hook.pyexecnet_gwmanage_rsyncfinish( self.hook.pyexecnet_gwmanage_rsyncfinish(
source=source, source=source,
gateways=seen.values() gateways=gateways,
) )
def exit(self): def exit(self):

View File

@ -83,9 +83,6 @@ class RSync(object):
if checksum is not None and checksum == md5(data).digest(): if checksum is not None and checksum == md5(data).digest():
data = None # not really modified data = None # not really modified
else: else:
# ! there is a reason for the interning:
# sharing multiple copies of the file's data
data = intern(data)
self._report_send_file(channel.gateway, modified_rel_path) self._report_send_file(channel.gateway, modified_rel_path)
channel.send(data) channel.send(data)
@ -140,7 +137,7 @@ class RSync(object):
""" Adds a remote target specified via a 'gateway' """ Adds a remote target specified via a 'gateway'
and a remote destination directory. and a remote destination directory.
""" """
assert finishedcallback is None or callable(finishedcallback) assert finishedcallback is None or py.builtin.callable(finishedcallback)
for name in options: for name in options:
assert name in ('delete',) assert name in ('delete',)
def itemcallback(req): def itemcallback(req):

View File

@ -1,6 +1,10 @@
def f(): def f():
import os, stat, shutil, md5 import os, stat, shutil
try:
from hashlib import md5
except ImportError:
from md5 import md5
destdir, options = channel.receive() destdir, options = channel.receive()
modifiedfiles = [] modifiedfiles = []
@ -43,7 +47,7 @@ def f():
pass pass
elif msg_mtime != st.st_mtime: elif msg_mtime != st.st_mtime:
f = open(path, 'rb') f = open(path, 'rb')
checksum = md5.md5(f.read()).digest() checksum = md5(f.read()).digest()
f.close() f.close()
else: else:
return # already fine return # already fine

View File

@ -13,7 +13,7 @@ def teardown_module(mod):
class DirSetup: class DirSetup:
def setup_method(self, method): def setup_method(self, method):
name = "%s.%s" %(self.__class__.__name__, method.func_name) name = "%s.%s" %(self.__class__.__name__, method.__name__)
self.tmpdir = t = py.test.ensuretemp(name) self.tmpdir = t = py.test.ensuretemp(name)
self.source = t.join("source") self.source = t.join("source")
self.dest1 = t.join("dest1") self.dest1 = t.join("dest1")