diff --git a/lib/java/test/org/apache/thrift/server/ServerTestBase.java b/lib/java/test/org/apache/thrift/server/ServerTestBase.java
old mode 100644
new mode 100755
index 08b57e2..209038b
--- a/lib/java/test/org/apache/thrift/server/ServerTestBase.java
+++ b/lib/java/test/org/apache/thrift/server/ServerTestBase.java
@@ -234,7 +234,7 @@
         x.errorCode = 1001;
         x.message = arg;
         throw x;
-      } else if (arg.equals("ApplicationException")) {
+      } else if (arg.equals("TException")) {
         throw new TException(arg);
       } else {
         Xtruct result = new Xtruct();
diff --git a/lib/java/test/org/apache/thrift/test/TestClient.java b/lib/java/test/org/apache/thrift/test/TestClient.java
index 45369ba..a7d5544 100644
--- a/lib/java/test/org/apache/thrift/test/TestClient.java
+++ b/lib/java/test/org/apache/thrift/test/TestClient.java
@@ -48,37 +48,38 @@
  */
 public class TestClient {
   public static void main(String [] args) {
+    String host = "localhost";
+    int port = 9090;
+    String url = null;
+    int numTests = 1;
+    boolean framed = false;
+
+    int socketTimeout = 1000;
+
     try {
-      String host = "localhost";
-      int port = 9090;
-      String url = null;
-      int numTests = 1;
-      boolean framed = false;
-
-      int socketTimeout = 1000;
-
-      try {
-        for (int i = 0; i < args.length; ++i) {
-          if (args[i].equals("-h")) {
-            String[] hostport = (args[++i]).split(":");
-            host = hostport[0];
-            port = Integer.valueOf(hostport[1]);
-          } else if (args[i].equals("-f") || args[i].equals("-framed")) {
-            framed = true;
-          } else if (args[i].equals("-u")) {
-            url = args[++i];
-          } else if (args[i].equals("-n")) {
-            numTests = Integer.valueOf(args[++i]);
-          } else if (args[i].equals("-timeout")) {
-            socketTimeout = Integer.valueOf(args[++i]);
-          }
+      for (int i = 0; i < args.length; ++i) {
+        if (args[i].equals("-h")) {
+          String[] hostport = (args[++i]).split(":");
+          host = hostport[0];
+          port = Integer.valueOf(hostport[1]);
+        } else if (args[i].equals("-f") || args[i].equals("-framed")) {
+          framed = true;
+        } else if (args[i].equals("-u")) {
+          url = args[++i];
+        } else if (args[i].equals("-n")) {
+          numTests = Integer.valueOf(args[++i]);
+        } else if (args[i].equals("-timeout")) {
+          socketTimeout = Integer.valueOf(args[++i]);
         }
-      } catch (Exception x) {
-        x.printStackTrace();
       }
+    } catch (Exception x) {
+      x.printStackTrace();
+      System.exit(1);
+    }
 
-      TTransport transport;
+    TTransport transport = null;
 
+    try {
       if (url != null) {
         transport = new THttpClient(url);
       } else {
@@ -89,28 +90,35 @@
           transport = new TFramedTransport(transport);
         }
       }
+    } catch (Exception x) {
+      x.printStackTrace();
+      System.exit(1);
+    }
 
-      TBinaryProtocol binaryProtocol =
-        new TBinaryProtocol(transport);
-      ThriftTest.Client testClient =
-        new ThriftTest.Client(binaryProtocol);
-      Insanity insane = new Insanity();
+    TBinaryProtocol binaryProtocol =
+      new TBinaryProtocol(transport);
+    ThriftTest.Client testClient =
+      new ThriftTest.Client(binaryProtocol);
+    Insanity insane = new Insanity();
 
-      long timeMin = 0;
-      long timeMax = 0;
-      long timeTot = 0;
+    long timeMin = 0;
+    long timeMax = 0;
+    long timeTot = 0;
 
-      for (int test = 0; test < numTests; ++test) {
-
+    int failCount = 0;
+    for (int test = 0; test < numTests; ++test) {
+      try {
         /**
          * CONNECT TEST
          */
         System.out.println("Test #" + (test+1) + ", " + "connect " + host + ":" + port);
+
         try {
           transport.open();
         } catch (TTransportException ttx) {
+          ttx.printStackTrace();
           System.out.println("Connect failed: " + ttx.getMessage());
-          continue;
+          System.exit(1);
         }
 
         long start = System.nanoTime();
@@ -124,6 +132,7 @@
           System.out.print(" = void\n");
         } catch (TApplicationException tax) {
           tax.printStackTrace();
+          failCount++;
         }
 
         /**
@@ -132,6 +141,10 @@
         System.out.print("testString(\"Test\")");
         String s = testClient.testString("Test");
         System.out.print(" = \"" + s + "\"\n");
+        if (!s.equals("Test")) {
+          failCount++;
+          System.out.println("FAILURE\n");
+        }
 
         /**
          * BYTE TEST
@@ -139,6 +152,10 @@
         System.out.print("testByte(1)");
         byte i8 = testClient.testByte((byte)1);
         System.out.print(" = " + i8 + "\n");
+        if (i8 != 1) {
+          failCount++; 
+          System.out.println("FAILURE\n");
+        }
 
         /**
          * I32 TEST
@@ -146,6 +163,10 @@
         System.out.print("testI32(-1)");
         int i32 = testClient.testI32(-1);
         System.out.print(" = " + i32 + "\n");
+        if (i32 != -1) {
+          failCount++; 
+          System.out.println("FAILURE\n");
+        }
 
         /**
          * I64 TEST
@@ -153,13 +174,21 @@
         System.out.print("testI64(-34359738368)");
         long i64 = testClient.testI64(-34359738368L);
         System.out.print(" = " + i64 + "\n");
+        if (i64 != -34359738368L) {
+          failCount++;
+          System.out.println("FAILURE\n");
+        }
 
         /**
          * DOUBLE TEST
          */
-        System.out.print("testDouble(5.325098235)");
-        double dub = testClient.testDouble(5.325098235);
+        System.out.print("testDouble(-5.325098235)");
+        double dub = testClient.testDouble(-5.325098235);
         System.out.print(" = " + dub + "\n");
+        if (Math.abs(dub - (-5.325098235)) > 0.001) {
+          failCount++;
+          System.out.println("FAILURE\n");
+        }
 
         /**
          * STRUCT TEST
@@ -171,7 +200,15 @@
         out.i32_thing = -3;
         out.i64_thing = -5;
         Xtruct in = testClient.testStruct(out);
-        System.out.print(" = {" + "\"" + in.string_thing + "\", " + in.byte_thing + ", " + in.i32_thing + ", " + in.i64_thing + "}\n");
+        System.out.print(" = {" + "\"" + 
+                         in.string_thing + "\"," + 
+                         in.byte_thing + ", " + 
+                         in.i32_thing + ", " + 
+                         in.i64_thing + "}\n");
+        if (!in.equals(out)) {
+          failCount++; 
+          System.out.println("FAILURE\n");
+        }
 
         /**
          * NESTED STRUCT TEST
@@ -183,7 +220,16 @@
         out2.i32_thing = 5;
         Xtruct2 in2 = testClient.testNest(out2);
         in = in2.struct_thing;
-        System.out.print(" = {" + in2.byte_thing + ", {" + "\"" + in.string_thing + "\", " + in.byte_thing + ", " + in.i32_thing + ", " + in.i64_thing + "}, " + in2.i32_thing + "}\n");
+        System.out.print(" = {" + in2.byte_thing + ", {" + "\"" + 
+                         in.string_thing + "\", " + 
+                         in.byte_thing + ", " +
+                         in.i32_thing + ", " +
+                         in.i64_thing + "}, " +
+                         in2.i32_thing + "}\n");
+        if (!in2.equals(out2)) {
+          failCount++;
+          System.out.println("FAILURE\n");
+        }
 
         /**
          * MAP TEST
@@ -215,6 +261,15 @@
           System.out.print(key + " => " + mapout.get(key));
         }
         System.out.print("}\n");
+        if (!mapout.equals(mapin)) {
+          failCount++; 
+          System.out.println("FAILURE\n");
+        }
+
+        /**
+         * STRING MAP TEST
+         *  missing
+         */
 
         /**
          * SET TEST
@@ -246,6 +301,10 @@
           System.out.print(elem);
         }
         System.out.print("}\n");
+        if (!setout.equals(setin)) {
+          failCount++; 
+          System.out.println("FAILURE\n");
+        }
 
         /**
          * LIST TEST
@@ -277,6 +336,10 @@
           System.out.print(elem);
         }
         System.out.print("}\n");
+        if (!listout.equals(listin)) {
+          failCount++; 
+          System.out.println("FAILURE\n");
+        }
 
         /**
          * ENUM TEST
@@ -284,22 +347,42 @@
         System.out.print("testEnum(ONE)");
         Numberz ret = testClient.testEnum(Numberz.ONE);
         System.out.print(" = " + ret + "\n");
+        if (ret != Numberz.ONE) {
+          failCount++;
+          System.out.println("FAILURE\n");
+        }
 
         System.out.print("testEnum(TWO)");
         ret = testClient.testEnum(Numberz.TWO);
         System.out.print(" = " + ret + "\n");
+        if (ret != Numberz.TWO) {
+          failCount++; 
+          System.out.println("FAILURE\n");
+        }
 
         System.out.print("testEnum(THREE)");
         ret = testClient.testEnum(Numberz.THREE);
         System.out.print(" = " + ret + "\n");
+        if (ret != Numberz.THREE) {
+          failCount++;
+          System.out.println("FAILURE\n");
+        }
 
         System.out.print("testEnum(FIVE)");
         ret = testClient.testEnum(Numberz.FIVE);
         System.out.print(" = " + ret + "\n");
+        if (ret != Numberz.FIVE) {
+          failCount++;
+          System.out.println("FAILURE\n");
+        }
 
         System.out.print("testEnum(EIGHT)");
         ret = testClient.testEnum(Numberz.EIGHT);
         System.out.print(" = " + ret + "\n");
+        if (ret != Numberz.EIGHT) {
+          failCount++;
+          System.out.println("FAILURE\n");
+        }
 
         /**
          * TYPEDEF TEST
@@ -307,6 +390,10 @@
         System.out.print("testTypedef(309858235082523)");
         long uid = testClient.testTypedef(309858235082523L);
         System.out.print(" = " + uid + "\n");
+        if (uid != 309858235082523L) {
+          failCount++;
+          System.out.println("FAILURE\n");
+        }
 
         /**
          * NESTED MAP TEST
@@ -381,14 +468,16 @@
           System.out.print("testClient.testException(\"Xception\") =>");
           testClient.testException("Xception");
           System.out.print("  void\nFAILURE\n");
+          failCount++;
         } catch(Xception e) {
-          System.out.printf("  {%u, \"%s\"}\n", e.errorCode, e.message);
+          System.out.printf("  {%d, \"%s\"}\n", e.errorCode, e.message);
         }
         
         try {
           System.out.print("testClient.testException(\"TException\") =>");
           testClient.testException("TException");
           System.out.print("  void\nFAILURE\n");
+          failCount++;
         } catch(TException e) {
           System.out.printf("  {\"%s\"}\n", e.getMessage());
         }
@@ -399,6 +488,7 @@
           System.out.print("  void\n");
         }catch(Exception e) {
           System.out.printf("  exception\nFAILURE\n");
+          failCount++;
         }
         
         
@@ -410,16 +500,18 @@
           System.out.printf("testClient.testMultiException(\"Xception\", \"test 1\") =>");
           testClient.testMultiException("Xception", "test 1");
           System.out.print("  result\nFAILURE\n");
+          failCount++;
         } catch(Xception e) {
-          System.out.printf("  {%u, \"%s\"}\n", e.errorCode, e.message);
+          System.out.printf("  {%d, \"%s\"}\n", e.errorCode, e.message);
         }
         
         try {
           System.out.printf("testClient.testMultiException(\"Xception2\", \"test 2\") =>");
           testClient.testMultiException("Xception2", "test 2");
           System.out.print("  result\nFAILURE\n");
+          failCount++;
         } catch(Xception2 e) {
-          System.out.printf("  {%u, {\"%s\"}}\n", e.errorCode, e.struct_thing.string_thing);
+          System.out.printf("  {%d, {\"%s\"}}\n", e.errorCode, e.struct_thing.string_thing);
         }
         
         try {
@@ -429,6 +521,7 @@
           System.out.printf("  {{\"%s\"}}\n", result.string_thing);
         } catch(Exception e) {
           System.out.printf("  exception\nFAILURE\n");
+          failCount++;
         }
 
 
@@ -441,9 +534,10 @@
         testClient.testOneway(3);
         long onewayElapsedMillis = (System.nanoTime() - startOneway) / 1000000;
         if (onewayElapsedMillis > 200) {
-          throw new Exception("Oneway test failed: took " +
+          System.out.println("Oneway test failed: took " +
                               Long.toString(onewayElapsedMillis) +
                               "ms");
+          failCount++;
         } else {
           System.out.println("Success - took " +
                              Long.toString(onewayElapsedMillis) +
@@ -465,22 +559,27 @@
         timeTot += tot;
 
         transport.close();
+      } catch (Exception x) {
+        x.printStackTrace();
+        failCount++;
       }
-
-      long timeAvg = timeTot / numTests;
-
-      System.out.println("Min time: " + timeMin/1000 + "us");
-      System.out.println("Max time: " + timeMax/1000 + "us");
-      System.out.println("Avg time: " + timeAvg/1000 + "us");
-
-      String json = (new TSerializer(new TSimpleJSONProtocol.Factory())).toString(insane);
-
-      System.out.println("\nFor good meausre here is some JSON:\n" + json);
-
-    } catch (Exception x) {
-      x.printStackTrace();
     }
 
-  }
+    long timeAvg = timeTot / numTests;
 
+    System.out.println("Min time: " + timeMin/1000 + "us");
+    System.out.println("Max time: " + timeMax/1000 + "us");
+    System.out.println("Avg time: " + timeAvg/1000 + "us");
+
+    try {
+      String json = (new TSerializer(new TSimpleJSONProtocol.Factory())).toString(insane);
+      System.out.println("\nFor good meausre here is some JSON:\n" + json);
+    } catch (TException x) {
+      x.printStackTrace();
+      System.exit(1);
+    }
+
+
+    System.exit(failCount);
+  }
 }
diff --git a/lib/js/test/test.js b/lib/js/test/test.js
index c30287f..99fcc41 100755
--- a/lib/js/test/test.js
+++ b/lib/js/test/test.js
@@ -1,4 +1,4 @@
-/*
+﻿/*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements. See the NOTICE file
  * distributed with this work for additional information
@@ -205,13 +205,12 @@
     }
   });
 
-  test("unexpected Application Exception", function() {
+  test("TException", function() {
     expect(1);
     try{
-      client.testException("ApplicationException");
+      client.testException("TException");
     } catch(e) {
-      ok(true); //@HACK: ignore faulty java server response for exceptions
-      //equal(e.message, "ApplicationException");
+      ok(true);
     }
   });
 
diff --git a/test/test.sh b/test/test.sh
index 6deb87d..4c76d90 100755
--- a/test/test.sh
+++ b/test/test.sh
@@ -27,7 +27,6 @@
 # THRIFT-819 add Enumeration for protocol, transport and server types
 
 BASEDIR=$(dirname $0)
-echo $BASEDIR
 cd $BASEDIR
 
 print_header() {
@@ -41,9 +40,10 @@
     client_exec=$4
     server_exec=$5
     server_startup_time=$6
+    client_delay=$7
     
     testname=${client_server}_${protocol}_${transport}
-    server_timeout=$((${server_startup_time}+10))
+    server_timeout=$((${server_startup_time}+${client_delay}))
     printf "%-16s %-11s %-17s" ${client_server} ${protocol} ${transport} 
     timeout $server_timeout $server_exec > log/${testname}_server.log 2>&1 &
     sleep $server_startup_time
@@ -61,7 +61,7 @@
       echo ""
       print_header
     fi
-    sleep 10
+    sleep ${client_delay}
 }
 
 echo "Apache Thrift - integration test suite"
@@ -94,7 +94,7 @@
       do_test "cpp-cpp"   "${proto}" "${trans}-${sock}" \
               "cpp/TestClient --protocol=${proto} --transport=${trans} ${extraparam}" \
               "cpp/TestServer --protocol=${proto} --transport=${trans} ${extraparam}" \
-              "10"
+              "10" "5"
     done;
   done;
 done;
@@ -105,78 +105,78 @@
 do_test "py-py" "binary" "buffered-ip" \
         "py/TestClient.py --proto=binary --port=9090 --host=localhost --genpydir=py/gen-py" \
         "py/TestServer.py --proto=binary --port=9090 --genpydir=py/gen-py TSimpleServer" \
-        "10"
+        "10" "10"
 do_test "py-py" "json" "buffered-ip" \
         "py/TestClient.py --proto=json --port=9090 --host=localhost --genpydir=py/gen-py" \
         "py/TestServer.py --proto=json --port=9090 --genpydir=py/gen-py TSimpleServer" \
-        "10"
+        "10" "10"
 do_test "py-cpp" "binary" "buffered-ip" \
         "py/TestClient.py --proto=binary --port=9090 --host=localhost --genpydir=py/gen-py" \
         "cpp/TestServer" \
-        "10"
+        "10" "10"
 do_test "py-cpp" "json" "buffered-ip" \
         "py/TestClient.py --proto=json --port=9090 --host=localhost --genpydir=py/gen-py" \
         "cpp/TestServer --protocol=json" \
-        "10"
+        "10" "10"
 do_test "cpp-py" "binary" "buffered-ip" \
         "cpp/TestClient --protocol=binary --port=9090" \
         "py/TestServer.py --proto=binary --port=9090 --genpydir=py/gen-py TSimpleServer" \
-        "10"
+        "10" "10"
 do_test "cpp-py" "json" "buffered-ip" \
         "cpp/TestClient --protocol=json --port=9090" \
         "py/TestServer.py --proto=json --port=9090 --genpydir=py/gen-py TSimpleServer" \
-        "10"
+        "10" "10"
 do_test "py-java"  "binary" "buffered-ip" \
         "py/TestClient.py --proto=binary --port=9090 --host=localhost --genpydir=py/gen-py" \
         "ant -f  ../lib/java/build.xml testserver" \
-        "120"
+        "120" "10"
 do_test "py-java"  "json"   "buffered-ip" \
         "py/TestClient.py --proto=json --port=9090 --host=localhost --genpydir=py/gen-py" \
         "ant -f  ../lib/java/build.xml testserver" \
-        "120"
+        "120" "10"
 do_test "java-py"  "binary" "buffered-ip" \
         "ant -f  ../lib/java/build.xml testclient" \
         "py/TestServer.py --proto=binary --port=9090 --genpydir=py/gen-py TSimpleServer" \
-        "10"
+        "10" "35"
 do_test "java-java" "binary" "buffered-ip" \
         "ant -f  ../lib/java/build.xml testclient" \
         "ant -f  ../lib/java/build.xml testserver" \
-        "120"
+        "120" "35"
 do_test "cpp-java"  "binary" "buffered-ip" \
         "cpp/TestClient" \
         "ant -f  ../lib/java/build.xml testserver" \
-        "100"
+        "100" "10"
 do_test "cpp-java"  "json"   "buffered-ip" \
         "cpp/TestClient" \
         "ant -f  ../lib/java/build.xml testserver" \
-        "100"
+        "100" "10"
 do_test "js-java"   "json "  "http-ip" \
         "" \
         "ant -f  ../lib/js/test/build.xml unittest" \
-        "120"
+        "120" "10"
 do_test "java-cpp"  "binary" "buffered-ip" \
         "ant -f  ../lib/java/build.xml testclient" \
         "cpp/TestServer" \
-        "10"
+        "10" "35"
 do_test "perl-cpp"  "binary" "buffered-ip" \
         "perl -I perl/gen-perl/ -I../lib/perl/lib/ perl/TestClient.pl" \
         "cpp/TestServer" \
-        "10"
+        "10" "10"
 do_test "php-cpp"  "binary" "buffered-ip" \
         "make -C php/ client" \
         "cpp/TestServer" \
-        "10"
+        "10" "10"
 do_test "nodejs-nodejs" "binary" "framed-ip" \
         "make -C nodejs/ client" \
         "make -C nodejs/ server" \
-        "1"
+        "1" "10"
 do_test "nodejs-cpp" "binary" "framed-ip" \
         "make -C nodejs/ client" \
         "cpp/TestServer --transport=framed" \
-        "1"
+        "1" "10"
 do_test "cpp-nodejs" "binary" "framed-ip" \
         "cpp/TestClient --transport=framed" \
         "make -C nodejs/ server" \
-        "1"
+        "1" "10"
 
 cd -
