diff options
Diffstat (limited to 'python/test/TestHelper.py')
-rw-r--r-- | python/test/TestHelper.py | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/python/test/TestHelper.py b/python/test/TestHelper.py new file mode 100644 index 00000000000..21adf4797d9 --- /dev/null +++ b/python/test/TestHelper.py @@ -0,0 +1,107 @@ +# ********************************************************************** +# +# Copyright (c) 2003-2018 ZeroC, Inc. All rights reserved. +# +# This copy of Ice is licensed to you under the terms described in the +# ICE_LICENSE file included in this distribution. +# +# ********************************************************************** + +import Ice +import sys +import os +import traceback +import importlib + + +class TestHelper: + + def __init__(self): + self._communicator = None + + def getTestEndpoint(self, properties=None, num=0, protocol=""): + + if properties is None: + properties = self._communicator.getProperties() + + if protocol == "": + protocol = properties.getPropertyWithDefault("Ice.Default.Protocol", "default") + + port = properties.getPropertyAsIntWithDefault("Test.BasePort", 12010) + num + + return "{0} -p {1}".format(protocol, port) + + def getTestHost(self, properties=None): + + if properties is None: + properties = self._communicator.getProperties() + + return properties.getPropertyWithDefaultHost("Ice.Default.Host", "127.0.0.1") + + def getTestProtocol(self, properties=None): + + if properties is None: + properties = self._communicator.getProperties() + + return properties.getPropertyWithDefault("Ice.Default.Protocol", "tcp") + + def getTestPort(self, properties=None, num=0): + + if properties is None: + properties = self._communicator.getProperties() + + return properties.getPropertyAsIntWithDefault("Test.BasePort", 12010) + num + + def createTestProperties(self, args=[]): + + properties = Ice.createProperties(args) + properties.parseCommandLineOptions("Test", args) + return properties + + def initialize(self, initData=None, properties=None, args=[]): + + if initData is None: + initData = Ice.InitializationData() + if properties: + initData.properties = properties + else: + initData.properties = self.createTestProperties(args) + + communicator = Ice.initialize(initData) + + if self._communicator is None: + self._communicator = communicator + + return communicator + + def communicator(self): + return self._communicator + + def shutdown(self): + if self._communicator: + self._communicator.shutdown() + + @classmethod + def loadSlice(self, args): + sliceDir = Ice.getSliceDir() + if not sliceDir: + print(sys.argv[0] + ': Slice directory not found.') + sys.exit(1) + Ice.loadSlice("'-I{0}' {1}".format(sliceDir, args)) + + @classmethod + def run(self): + try: + moduleName = os.path.splitext(sys.argv[1])[0] + module = importlib.import_module(moduleName) + cls = getattr(module, moduleName) + helper = cls() + helper.run(sys.argv[2:]) + return 0 + except Exception: + traceback.print_exc() + return 1 + + +if __name__ == '__main__': + sys.exit(TestHelper.run()) |