summaryrefslogtreecommitdiff
path: root/python/test/TestHelper.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/test/TestHelper.py')
-rw-r--r--python/test/TestHelper.py107
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())