-
Notifications
You must be signed in to change notification settings - Fork 593
/
Copy pathTestHelper.py
97 lines (73 loc) · 2.75 KB
/
TestHelper.py
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
#
# 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.getIceProperty("Ice.Default.Protocol")
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())