diff --git a/test/test.py b/test/test.py
index f69cb62..00d2d0d 100644
--- a/test/test.py
+++ b/test/test.py
@@ -60,16 +60,14 @@
   server_args = []
   cli_args = []
   if server_lib == 'java':
-    server_args.append(server_executable[0])
-    server_args.append(server_executable[1])
-    server_args.append(relfile(server_executable[2]))
+    server_executable[2] = relfile(server_executable[2])
+    server_args.extend(server_executable)
     server_args.extend(['-Dtestargs','\"'])
   else:
     server_args = [relfile(server_executable)]
   if client_lib == 'java':
-    cli_args.append(client_executable[0])
-    cli_args.append(client_executable[1])
-    cli_args.append(relfile(client_executable[2]))
+    client_executable[2] = relfile(client_executable[2])
+    cli_args.extend(client_executable)
     cli_args.extend(['-Dtestargs','\"'])
   else:
     cli_args = [relfile(client_executable)]
@@ -92,18 +90,14 @@
 #      which.append('-v')
   if server_lib == 'java':
     server_args.append('\"')
-  elif server_lib == 'py':
-    server_args.append('--genpydir=' + relfile('py/gen-py'))
   if client_lib == 'java':
     cli_args.append('\"')
-  elif client_lib == 'py':
-    cli_args.append('--genpydir=' + relfile('py/gen-py'))
 
   server_args.extend(server_extra_args)
   cli_args.extend(client_extra_args)
 
-  server_log=open(relfile("log/" + test_name + "_server.log"),"a")
-  client_log=open(relfile("log/" + test_name + "_client.log"),"a")
+  server_log=open("log/" + test_name + "_server.log","a")
+  client_log=open("log/" + test_name + "_client.log","a")
 
   try:
     if options.verbose > 0:
@@ -175,8 +169,8 @@
              'processes to terminate via alarm'
              % (protocol, use_zlib, use_ssl, extra_sleep))
       time.sleep(extra_sleep)
-    os.kill(serverproc.pid, signal.SIGTERM)
-    #serverproc.wait()
+    os.kill(serverproc.pid, signal.SIGKILL)
+    serverproc.wait()
   client_log.flush()
   server_log.flush()
   client_log.close()
@@ -184,15 +178,14 @@
 
 test_count = 0
 failed = 0
-hard_fail_count = 0
 platform = platform.system()
-if os.path.exists(relfile('log')): shutil.rmtree(relfile('log'))
-os.makedirs(relfile('log'))
-if os.path.exists(relfile('results.json')): os.remove(relfile('results.json'))
-results_json = open(relfile("results.json"),"a")
+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(relfile('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}")
@@ -224,8 +217,6 @@
                   ret = runServiceTest(test_name, server_lib, server_executable, server_extra_args, client_lib, client_executable, client_extra_args, protocol, protocol, transport, 9090, 0, sock)
                   if ret != None:
                     failed += 1
-                    if client["exit"] == "hard" and server["exit"] == "hard":
-                      hard_fail_count +=1
                     print "Error: %s" % ret
                     print "Using"
                     print (' Server: %s --protocol=%s --transport=%s %s %s'
@@ -249,8 +240,6 @@
 
                   if ret != None:
                     failed += 1
-                    if client["exit"] == "hard" and server["exit"] == "hard":
-                      hard_fail_count +=1
                     print "Error: %s" % ret
                     print "Using"
                     print (' Server: %s --protocol=%s --transport=%s %s %s'
@@ -273,8 +262,6 @@
                   ret = runServiceTest(test_name, server_lib,server_executable, server_extra_args, client_lib, client_executable, client_extra_args, protocol, 'binary', transport, 9090, 0, sock)
                   if ret != None:
                     failed += 1
-                    if client["exit"] == "hard" and server["exit"] == "hard":
-                      hard_fail_count +=1
                     print "Error: %s" % ret
                     print "Using"
                     print (' Server: %s --protocol=%s --transport=%s %s %s'
@@ -289,5 +276,4 @@
 results_json.write("\n]")
 results_json.flush()
 results_json.close()
-print '%s failed of %s tests in total' % (failed, test_count)
-sys.exit(hard_fail_count)
\ No newline at end of file
+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 54d699e..2c16a69 100644
--- a/test/tests.json
+++ b/test/tests.json
@@ -4,7 +4,7 @@
             "description": "Python TestClient",
             "lib": "py",
             "executable": "py/TestClient.py",
-            "exit": "hard",
+            "extra_args":  ["--genpydir=py/gen-py"],
             "protocols": [
                 "binary",
                 "compact",
@@ -27,7 +27,6 @@
             "description": "C++ TestClient",
             "lib": "cpp",
             "executable": "cpp/TestClient",
-            "exit": "soft",
             "protocols": [
                 "binary",
                 "compact",
@@ -51,7 +50,6 @@
             "description": "Nodejs TestClient",
             "lib": "nodejs",
             "executable": "../lib/nodejs/test/client.js",
-            "exit": "soft",
             "protocols": [
                 "binary",
                 "compact",
@@ -73,7 +71,6 @@
             "description": "Ruby TestClient",
             "lib": "ruby",
             "executable": "rb/integration/TestClient.rb",
-            "exit": "soft",
             "protocols": [
                 "binary",
                 "compact",
@@ -96,7 +93,6 @@
             "lib": "java",
             "executable": ["ant","-f","../lib/java/build.xml","-Dno-gen-thrift=\"\""],
             "extra_args": ["run-testclient"],
-            "exit": "soft",
             "protocols": [
                 "binary",
                 "compact",
@@ -122,9 +118,8 @@
             "description": "Python TSimpleServer",
             "lib": "py",
             "executable": "py/TestServer.py",
-            "extra_args": ["TSimpleServer"],
+            "extra_args": ["--genpydir=py/gen-py", "TSimpleServer"],
             "extra_delay": 0,
-            "exit": "hard",
             "protocols": [
                 "binary",
                 "compact",
@@ -147,7 +142,6 @@
             "description": "C++ TestServer",
             "lib": "cpp",
             "executable": "cpp/TestServer",
-            "exit": "hard",
             "protocols": [
                 "binary",
                 "compact",
@@ -171,7 +165,6 @@
             "description": "Ruby TestServer",
             "lib": "ruby",
             "executable": "rb/integration/TestServer.rb",
-            "exit": "soft",
             "protocols": [
                 "binary",
                 "compact",
@@ -193,7 +186,6 @@
             "description": "Nodejs TestServer",
             "lib": "nodejs",
             "executable": "../lib/nodejs/test/server.js",
-            "exit": "soft",
             "protocols": [
                 "binary",
                 "compact",
@@ -216,7 +208,6 @@
             "lib": "java",
             "executable": ["ant","-f","../lib/java/build.xml","-Dno-gen-thrift=\"\""],
             "extra_args": ["run-testserver"],
-            "exit": "soft",
             "protocols": [
                 "binary",
                 "compact",
