summaryrefslogtreecommitdiff
path: root/test/test.py
diff options
context:
space:
mode:
authorRoger Meier <roger@apache.org>2014-06-18 22:43:17 +0200
committerRoger Meier <roger@apache.org>2014-06-18 22:43:17 +0200
commit32f3982275882b2886dd9cbde2d49b99b8ed1f5f (patch)
tree771efc86d6bbfc6f21c51f0b37fb3c89e88440d1 /test/test.py
parent55087a49d335db7da23e23d8d8a9368e4e5ae7a6 (diff)
downloadthrift-32f3982275882b2886dd9cbde2d49b99b8ed1f5f.tar.gz
THRIFT-2578 Moving 'make cross' from test.sh to test.py
Patch: Chamila Dilshan Wijayarathna
Diffstat (limited to 'test/test.py')
-rwxr-xr-xtest/test.py92
1 files changed, 64 insertions, 28 deletions
diff --git a/test/test.py b/test/test.py
index 30c147658..0111a2f05 100755
--- a/test/test.py
+++ b/test/test.py
@@ -27,6 +27,8 @@ import sys
import os
import signal
import json
+import shutil
+import threading
from optparse import OptionParser
parser = OptionParser()
@@ -44,7 +46,7 @@ options, args = parser.parse_args()
def relfile(fname):
return os.path.join(os.path.dirname(__file__), fname)
-def runServiceTest(server_executable, server_extra_args, client_executable, client_extra_args, protocol, transport, port, use_zlib, use_ssl):
+def runServiceTest(test_name, server_executable, server_extra_args, client_executable, client_extra_args, protocol, transport, port, use_zlib, use_ssl):
# Build command line arguments
server_args = [relfile(server_executable)]
cli_args = [relfile(client_executable)]
@@ -63,12 +65,14 @@ def runServiceTest(server_executable, server_extra_args, client_executable, clie
server_args.extend(server_extra_args)
cli_args.extend(client_extra_args)
+ server_log=open("log/" + test_name + "_server.log","a")
+ client_log=open("log/" + test_name + "_client.log","a")
if options.verbose > 0:
print 'Testing server: %s' % (' '.join(server_args))
- serverproc = subprocess.Popen(server_args)
+ serverproc = subprocess.Popen(server_args, stdout=server_log, stderr=server_log)
else:
- serverproc = subprocess.Popen(server_args, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ serverproc = subprocess.Popen(server_args, stdout=server_log, stderr=server_log)
def ensureServerAlive():
if serverproc.poll() is not None:
@@ -94,17 +98,32 @@ def runServiceTest(server_executable, server_extra_args, client_executable, clie
sock.close()
try:
- if options.verbose > 0:
- print 'Testing client: %s' % (' '.join(cli_args))
- ret = subprocess.call(cli_args)
- else:
- ret = subprocess.call(cli_args, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ o = []
+ def target():
+ if options.verbose > 0:
+ print 'Testing client: %s' % (' '.join(cli_args))
+ process = subprocess.Popen(cli_args, stdout=client_log, stderr=client_log)
+ o.append(process)
+ process.communicate()
+ else:
+ process = subprocess.Popen(cli_args, stdout=client_log, stderr=client_log)
+ o.append(process)
+ process.communicate()
+ thread = threading.Thread(target=target)
+ thread.start()
+
+ thread.join(10)
+ if thread.is_alive():
+ print 'Terminating process'
+ o[0].terminate()
+ thread.join()
+ ret = o[0].returncode
if ret != 0:
return "Client subprocess failed, retcode=%d, args: %s" % (ret, ' '.join(cli_args))
#raise Exception("Client subprocess failed, retcode=%d, args: %s" % (ret, ' '.join(cli_args)))
finally:
# check that server didn't die
- ensureServerAlive()
+ #ensureServerAlive()
extra_sleep = 0
if extra_sleep > 0 and options.verbose > 0:
print ('Giving (protocol=%s,zlib=%s,ssl=%s) an extra %d seconds for child'
@@ -113,39 +132,56 @@ def runServiceTest(server_executable, server_extra_args, client_executable, clie
time.sleep(extra_sleep)
os.kill(serverproc.pid, signal.SIGKILL)
serverproc.wait()
+ client_log.flush()
+ server_log.flush()
+ client_log.close()
+ server_log.close()
test_count = 0
failed = 0
+if os.path.exists('log'): shutil.rmtree('log')
+os.makedirs('log')
+
with open('tests.json') as data_file:
data = json.load(data_file)
+#subprocess.call("export NODE_PATH=../lib/nodejs/test:../lib/nodejs/lib:${NODE_PATH}")
+
for server in data["server"]:
server_executable = server["executable"]
server_extra_args = ""
+ server_lib = server["lib"]
if "extra_args" in server:
server_extra_args = server["extra_args"]
for protocol in server["protocols"]:
for transport in server["transports"]:
- for client in data["client"]:
- client_executable = client["executable"]
- client_extra_args = ""
- if "extra_args" in client:
- client_extra_args = client["extra_args"]
- if protocol in client["protocols"]:
- if transport in client["transports"]:
- ret = runServiceTest(server_executable, server_extra_args, client_executable, client_extra_args, protocol, transport, 9090, 0, 0)
- if ret != None:
- failed += 1
- print "Error: %s" % ret
- print "Using"
- print (' Server: %s --protocol=%s --transport=%s %s'
- % (server_executable, protocol, transport, ' '.join(server_extra_args)))
- print (' Client: %s --protocol=%s --transport=%s %s'
- % (client_executable, protocol, transport, ''.join(client_extra_args)))
-
-
- test_count += 1
+ for sock in server["sockets"]:
+ for client in data["client"]:
+ client_executable = client["executable"]
+ client_extra_args = ""
+ client_lib = client["lib"]
+ if "extra_args" in client:
+ client_extra_args = client["extra_args"]
+ if protocol in client["protocols"]:
+ if transport in client["transports"]:
+ if sock in client["sockets"]:
+ test_name = server_lib + "_" + client_lib + "_" + protocol + "_" + transport + "_" + sock
+ ssl = 0
+ if sock == 'ip-ssl':
+ ssl = 1
+ ret = runServiceTest(test_name, server_executable, server_extra_args, client_executable, client_extra_args, protocol, transport, 9090, 0, ssl)
+ if ret != None:
+ failed += 1
+ print "Error: %s" % ret
+ print "Using"
+ print (' Server: %s --protocol=%s --transport=%s %s'
+ % (server_executable, protocol, transport, ' '.join(server_extra_args)))
+ print (' Client: %s --protocol=%s --transport=%s %s'
+ % (client_executable, protocol, transport, ''.join(client_extra_args)))
+
+
+ test_count += 1
print '%s failed of %s tests in total' % (failed, test_count)