1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
|
#
# Copyright (c) ZeroC, Inc. All rights reserved.
#
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.getPropertyWithDefaul("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)
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())
|