From 3f67978103bc7e3faa036c35cf1f6f548d6c61dd Mon Sep 17 00:00:00 2001 From: cdwijayarathna Date: Wed, 9 Jul 2014 14:00:33 +0530 Subject: [PATCH] THRIFT-2578 Moving 'make cross' from test.sh to test.py Signed-off-by: Roger Meier --- test/result.html | 39 ++++++++++++++++ test/test.py | 114 +++++++++++++++++++++++++++++++++++++---------- test/tests.json | 6 ++- 3 files changed, 134 insertions(+), 25 deletions(-) create mode 100644 test/result.html mode change 100755 => 100644 test/test.py diff --git a/test/result.html b/test/result.html new file mode 100644 index 00000000..01101838 --- /dev/null +++ b/test/result.html @@ -0,0 +1,39 @@ + + + + +Apache Thrift - integration test suite + + + + + + +

Apache Thrift - integration test suite: Results

+ + + + + + + + + + +
ServerClientProtocolTransportResult (log)
+ + diff --git a/test/test.py b/test/test.py old mode 100755 new mode 100644 index 0111a2f0..cab942e9 --- a/test/test.py +++ b/test/test.py @@ -46,18 +46,30 @@ options, args = parser.parse_args() def relfile(fname): return os.path.join(os.path.dirname(__file__), fname) -def runServiceTest(test_name, server_executable, server_extra_args, client_executable, client_extra_args, protocol, transport, port, use_zlib, use_ssl): +def getSocketArgs(socket_type): + if socket_type == 'ip': + return "" + elif socket_type == 'ip-ssl': + return "--ssl" + elif socket_type == 'domain': + return "--domain-socket=/tmp/ThriftTest.thrift" + +def runServiceTest(test_name, server_executable, server_extra_args, client_executable, client_extra_args, server_protocol, client_protocol, transport, port, use_zlib, socket_type): # Build command line arguments server_args = [relfile(server_executable)] cli_args = [relfile(client_executable)] + server_args.append('--protocol=%s' % server_protocol) + cli_args.append('--protocol=%s' % client_protocol) + for which in (server_args, cli_args): - which.append('--protocol=%s' % protocol) # accel, binary or compact which.append('--transport=%s' % transport) which.append('--port=%d' % port) # default to 9090 if use_zlib: which.append('--zlib') - if use_ssl: + if socket_type == 'ip-ssl': which.append('--ssl') + elif socket_type == 'domain': + which.append('--domain-socket=/tmp/ThriftTest.thrift') # if options.verbose == 0: # which.append('-q') # if options.verbose == 2: @@ -73,7 +85,7 @@ def runServiceTest(test_name, server_executable, server_extra_args, client_execu serverproc = subprocess.Popen(server_args, stdout=server_log, stderr=server_log) else: serverproc = subprocess.Popen(server_args, stdout=server_log, stderr=server_log) - + def ensureServerAlive(): if serverproc.poll() is not None: print ('FAIL: Server process (%s) failed with retcode %d' @@ -87,13 +99,15 @@ def runServiceTest(test_name, server_executable, server_extra_args, client_execu max_attempts = 100 try: attempt = 0 - while sock.connect_ex(('127.0.0.1', port)) != 0: - attempt += 1 - if attempt >= max_attempts: - raise Exception("TestServer not ready on port %d after %.2f seconds" - % (port, sleep_time * attempt)) - ensureServerAlive() - time.sleep(sleep_time) + + if socket_type != 'domain': + while sock.connect_ex(('127.0.0.1', port)) != 0: + attempt += 1 + if attempt >= max_attempts: + raise Exception("TestServer not ready on port %d after %.2f seconds" + % (port, sleep_time * attempt)) + ensureServerAlive() + time.sleep(sleep_time) finally: sock.close() @@ -142,12 +156,15 @@ failed = 0 if os.path.exists('log'): shutil.rmtree('log') os.makedirs('log') +if os.path.exists('results.json'): os.remove('results.json') +results_json = open("results.json","a") +results_json.write("[\n") -with open('tests.json') as data_file: +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}") - +count = 0 for server in data["server"]: server_executable = server["executable"] server_extra_args = "" @@ -166,22 +183,73 @@ for server in data["server"]: if protocol in client["protocols"]: if transport in client["transports"]: if sock in client["sockets"]: + if count != 0: + results_json.write(",\n") + count = 1 + results_json.write("\t[\n\t\t\"" + server_lib + "\",\n\t\t\"" + client_lib + "\",\n\t\t\"" + protocol + "\",\n\t\t\"" + transport + "-" + sock + "\",\n" ) test_name = server_lib + "_" + client_lib + "_" + protocol + "_" + transport + "_" + sock + ret = runServiceTest(test_name, server_executable, server_extra_args, client_executable, client_extra_args, protocol, protocol, transport, 9090, 0, sock) + if ret != None: + failed += 1 + print "Error: %s" % ret + print "Using" + print (' Server: %s --protocol=%s --transport=%s %s %s' + % (server_executable, protocol, transport, getSocketArgs(sock), ' '.join(server_extra_args))) + print (' Client: %s --protocol=%s --transport=%s %s %s' + % (client_executable, protocol, transport, getSocketArgs(sock), ''.join(client_extra_args))) + results_json.write("\t\t\"failure (client, server)\"\n") + else: + results_json.write("\t\t\"success (client, server)\"\n") + results_json.write("\t]") + test_count += 1 + if protocol == 'binary' and 'accel' in client["protocols"]: + if transport in client["transports"]: + if sock in client["sockets"]: + if count != 0: + results_json.write(",\n") + count = 1 + results_json.write("\t[\n\t\t\"" + server_lib + "\",\n\t\t\"" + client_lib + "\",\n\t\t\"accel-binary\",\n\t\t\"" + transport + "-" + sock + "\",\n" ) + test_name = server_lib + "_" + client_lib + "_accel-binary_" + transport + "_" + sock + ret = runServiceTest(test_name, server_executable, server_extra_args, client_executable, client_extra_args, protocol, 'accel', transport, 9090, 0, sock) + if ret != None: + failed += 1 + print "Error: %s" % ret + print "Using" + print (' Server: %s --protocol=%s --transport=%s %s %s' + % (server_executable, protocol, transport, getSocketArgs(sock), ' '.join(server_extra_args))) + print (' Client: %s --protocol=%s --transport=%s %s %s' + % (client_executable, protocol, transport , getSocketArgs(sock), ''.join(client_extra_args))) + results_json.write("\t\t\"failure (client, server)\"\n") + else: + results_json.write("\t\t\"success (client, server)\"\n") + results_json.write("\t]") + test_count += 1 + if protocol == 'accel' and 'binary' in client["protocols"]: + if transport in client["transports"]: + if sock in client["sockets"]: + if count != 0: + results_json.write(",\n") + count = 1 + results_json.write("\t[\n\t\t\"" + server_lib + "\",\n\t\t\"" + client_lib + "\",\n\t\t\"binary-accel\",\n\t\t\"" + transport + "-" + sock + "\",\n" ) + test_name = server_lib + "_" + client_lib + "_accel-binary_" + 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) + ret = runServiceTest(test_name, server_executable, server_extra_args, client_executable, client_extra_args, protocol, 'binary', transport, 9090, 0, sock) 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))) - - + print (' Server: %s --protocol=%s --transport=%s %s %s' + % (server_executable, protocol, transport + sock, getSocketArgs(sock), ' '.join(server_extra_args))) + print (' Client: %s --protocol=%s --transport=%s %s %s' + % (client_executable, protocol, transport + sock, getSocketArgs(sock), ''.join(client_extra_args))) + results_json.write("\t\t\"failure (client, server)\"\n") + else: + results_json.write("\t\t\"success (client, server)\"\n") + results_json.write("\t]") test_count += 1 - -print '%s failed of %s tests in total' % (failed, test_count) - +results_json.write("\n]") +results_json.flush() +results_json.close() +print '%s failed of %s tests in total' % (failed, test_count) \ No newline at end of file diff --git a/test/tests.json b/test/tests.json index b5cab605..515aa499 100644 --- a/test/tests.json +++ b/test/tests.json @@ -36,7 +36,8 @@ ], "sockets": [ "ip", - "ip-ssl" + "ip-ssl", + "domain" ] }, { @@ -114,7 +115,8 @@ ], "sockets": [ "ip", - "ip-ssl" + "ip-ssl", + "domain" ] }, { -- 2.17.1