diff --git a/product/ERP5Type/tests/ERP5TypeTestCase.py b/product/ERP5Type/tests/ERP5TypeTestCase.py index d9749aa6b1c0c2a4c305d49cef40ef4bf8bb8d0e..13c359b13760f8f8079f8c0e1193a0f643da8b22 100644 --- a/product/ERP5Type/tests/ERP5TypeTestCase.py +++ b/product/ERP5Type/tests/ERP5TypeTestCase.py @@ -917,7 +917,7 @@ class ERP5TypeTestCase(ProcessingNodeTestCase, PortalTestCase): from Products import DeadlockDebugger except ImportError: pass - self.serverhost, self.serverport = self.startZServer() + self.serverhost, self.serverport = self.startZServer(verbose=True) self._registerNode(distributing=1, processing=1) self._updateConnectionStrings() diff --git a/product/ERP5Type/tests/ProcessingNodeTestCase.py b/product/ERP5Type/tests/ProcessingNodeTestCase.py index 9fe916b54e949fe916dba7d2e1b7ed513523cae8..a3db11841978e370692b4b8b8ac8b3d716e841f6 100644 --- a/product/ERP5Type/tests/ProcessingNodeTestCase.py +++ b/product/ERP5Type/tests/ProcessingNodeTestCase.py @@ -85,16 +85,24 @@ class ProcessingNodeTestCase(backportUnittest.TestCase, ZopeTestCase.TestCase): pass Lifetime.graceful_shutdown_loop() - def startZServer(self): + def startZServer(self, verbose=False): """Start HTTP ZServer in background""" utils = ZopeTestCase.utils if utils._Z2HOST is None: + _print = lambda hs: verbose and ZopeTestCase._print( + "Running %s server at %s:%s\n" % ( + hs.server_protocol, hs.server_name, hs.server_port)) try: hs = createZServer() except RuntimeError, e: ZopeTestCase._print(str(e)) else: utils._Z2HOST, utils._Z2PORT = hs.server_name, hs.server_port + _print(hs) + try: + _print(createZServer(zserver_type='webdav')) + except RuntimeError, e: + ZopeTestCase._print(str(e)) t = Thread(target=Lifetime.loop) t.setDaemon(1) t.start() diff --git a/product/ERP5Type/tests/utils.py b/product/ERP5Type/tests/utils.py index 1e88df213f1a36d7c6b5215fa41068e6446d6ad3..15a76ff50a9739d745e23165c599dd84699acb2c 100644 --- a/product/ERP5Type/tests/utils.py +++ b/product/ERP5Type/tests/utils.py @@ -297,19 +297,25 @@ def parseListeningAddress(host_port=None, default_host='127.0.0.1'): raise RuntimeError("Can't find free port (tried ports %s)\n" % ', '.join(map(str, port_list))) -def createZServer(log=os.devnull): - from ZServer import logger, zhttp_server, zhttp_handler - lg = logger.file_logger(log) - class new_zhttp_server: +def createZServer(log=os.devnull, zserver_type='http'): + import ZServer + if zserver_type == 'http': + zserver_class, zhandler_class = ZServer.zhttp_server, ZServer.zhttp_handler + elif zserver_type == 'webdav': + from ZServer.HTTPServer import zwebdav_server as zserver_class + from ZServer.WebDAVSrcHandler import WebDAVSrcHandler as zhandler_class + else: + raise NotImplementedError + lg = ZServer.logger.file_logger(log) + class new_zserver(zserver_class): # I can't use __new__ because zhttp_handler is an old-style class :( def __init__(self): - self.__class__ = zhttp_server + self.__class__, = self.__class__.__bases__ for ip, port in parseListeningAddress(os.environ.get('zserver')): - hs = new_zhttp_server() + hs = new_zserver() try: hs.__init__(ip, port, resolver=None, logger_object=lg) - hs.install_handler(zhttp_handler(module='Zope2', uri_base='')) - sys.stderr.write("Running ZServer at %s:%s\n" % (ip, port)) + hs.install_handler(zhandler_class(module='Zope2', uri_base='')) return hs except socket.error, e: if e[0] != errno.EADDRINUSE: