From ba22def54686f46962962d4e3b1f5cc511330a30 Mon Sep 17 00:00:00 2001 From: Julien Muchembled <jm@nexedi.com> Date: Thu, 18 Nov 2010 17:53:52 +0000 Subject: [PATCH] Unit tests: start webdav server git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@40394 20353a03-c40f-0410-a6d1-a30d3c3de9de --- product/ERP5Type/tests/ERP5TypeTestCase.py | 2 +- .../ERP5Type/tests/ProcessingNodeTestCase.py | 10 ++++++++- product/ERP5Type/tests/utils.py | 22 ++++++++++++------- 3 files changed, 24 insertions(+), 10 deletions(-) diff --git a/product/ERP5Type/tests/ERP5TypeTestCase.py b/product/ERP5Type/tests/ERP5TypeTestCase.py index d9749aa6b1..13c359b137 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 9fe916b54e..a3db118419 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 1e88df213f..15a76ff50a 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: -- 2.30.9