diff options
Diffstat (limited to 'extras/distributed-testing/distributed-test-runner.py')
| -rwxr-xr-x | extras/distributed-testing/distributed-test-runner.py | 43 |
1 files changed, 30 insertions, 13 deletions
diff --git a/extras/distributed-testing/distributed-test-runner.py b/extras/distributed-testing/distributed-test-runner.py index 68418fabfaf..5a07e2feab1 100755 --- a/extras/distributed-testing/distributed-test-runner.py +++ b/extras/distributed-testing/distributed-test-runner.py @@ -1,4 +1,4 @@ -#!/usr/bin/python2 +#!/usr/bin/python3 from __future__ import absolute_import from __future__ import division @@ -28,29 +28,40 @@ CLIENT_TIMEOUT_S = 60 PATCH_FILE_UID = str(uuid.uuid4()) SSH_TIMEOUT_S = 10 MAX_ATTEMPTS = 3 +ADDRESS_FAMILY = 'IPv4' + + +def socket_instance(address_family): + if address_family.upper() == 'ipv4'.upper(): + return socket.socket(socket.AF_INET, socket.SOCK_STREAM) + elif address_family.upper() == 'ipv6'.upper(): + return socket.socket(socket.AF_INET6, socket.SOCK_STREAM) + else: + Log.error("Invalid IP address family") + sys.exit(1) def patch_file(): return "/tmp/%s-patch.tar.gz" % PATCH_FILE_UID # .............................................................................. -# SimpleXMLRPCServer IPv6 Wrapper +# SimpleXMLRPCServer IPvX Wrapper # .............................................................................. -class IPv6SimpleXMLRPCServer(SimpleXMLRPCServer.SimpleXMLRPCServer): +class GeneralXMLRPCServer(SimpleXMLRPCServer.SimpleXMLRPCServer): def __init__(self, addr): SimpleXMLRPCServer.SimpleXMLRPCServer.__init__(self, addr) def server_bind(self): if self.socket: self.socket.close() - self.socket = socket.socket(socket.AF_INET6, socket.SOCK_STREAM) + self.socket = socket_instance(args.address_family) self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) SimpleXMLRPCServer.SimpleXMLRPCServer.server_bind(self) -class IPv6HTTPConnection(httplib.HTTPConnection): +class HTTPConnection(httplib.HTTPConnection): def __init__(self, host): self.host = host httplib.HTTPConnection.__init__(self, host) @@ -62,12 +73,12 @@ class IPv6HTTPConnection(httplib.HTTPConnection): self.sock.settimeout(old_timeout) -class IPv6Transport(xmlrpclib.Transport): +class IPTransport(xmlrpclib.Transport): def __init__(self, *args, **kwargs): xmlrpclib.Transport.__init__(self, *args, **kwargs) def make_connection(self, host): - return IPv6HTTPConnection(host) + return HTTPConnection(host) # .............................................................................. @@ -236,7 +247,7 @@ class TestServer: def init(self): Log.debug("Starting xmlrpc server on port %s" % self.port) - self.rpc = IPv6SimpleXMLRPCServer(("", self.port)) + self.rpc = GeneralXMLRPCServer(("", self.port)) self.rpc.register_instance(Handlers(self.scratchdir)) def serve(self): @@ -372,14 +383,17 @@ class Handlers: return self.shell.call("make install") == 0 @synchronized - def prove(self, id, test, timeout, valgrind=False, asan_noleaks=True): + def prove(self, id, test, timeout, valgrind="no", asan_noleaks=True): assert id == self.client_id self.shell.cd(self.gluster_root) env = "DEBUG=1 " - if valgrind: + if valgrind == "memcheck" or valgrind == "yes": cmd = "valgrind" cmd += " --tool=memcheck --leak-check=full --track-origins=yes" cmd += " --show-leak-kinds=all -v prove -v" + elif valgrind == "drd": + cmd = "valgrind" + cmd += " --tool=drd -v prove -v" elif asan_noleaks: cmd = "prove -v" env += "ASAN_OPTIONS=detect_leaks=0 " @@ -419,7 +433,7 @@ class RPCConnection((threading.Thread)): def _connect(self): url = "http://%s:%s" % (self.host, self.port) - self.proxy = xmlrpclib.ServerProxy(url, transport=IPv6Transport()) + self.proxy = xmlrpclib.ServerProxy(url, transport=IPTransport()) return self.proxy.hello(self.cb.id) def disconnect(self): @@ -816,8 +830,9 @@ parser.add_argument("--port", help="server port to listen", type=int, default=DEFAULT_PORT) # test role parser.add_argument("--tester", help="start tester", action="store_true") -parser.add_argument("--valgrind", help="run tests under valgrind", - action="store_true") +parser.add_argument("--valgrind[=memcheck,drd]", + help="run tests with valgrind tool 'memcheck' or 'drd'", + default="no") parser.add_argument("--asan", help="test with asan enabled", action="store_true") parser.add_argument("--asan-noleaks", help="test with asan but no mem leaks", @@ -836,6 +851,8 @@ parser.add_argument("--test-timeout", default=TEST_TIMEOUT_S) # general parser.add_argument("-v", help="verbose", action="store_true") +parser.add_argument("--address_family", help="IPv6 or IPv4 to use", + default=ADDRESS_FAMILY) args = parser.parse_args() |
