diff --git a/.gitignore b/.gitignore
index a3062d8..70e05f0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -219,7 +219,6 @@
 /missing
 /node_modules/
 /stamp-h1
-/test/status.html
 /test/results.json
 /test/c_glib/test_client
 /test/c_glib/test_server
diff --git a/.travis.yml b/.travis.yml
index bb45961..e5b8e02 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -56,15 +56,10 @@
   matrix:
     # Put it here because it's most time consuming
     - TEST_NAME="make cross (automake)"
-      CONFIG="--without-python"
-      ALL_DEPS="yes"
-      MAKE_TARGET="cross"
-
-    - TEST_NAME="make cross-py (automake)"
       THRIFT_CROSSTEST_CONCURRENCY=6
       CONFIG="--enable-tutorial=no --without-erlang --without-lua --without-haxe --without-d"
       ALL_DEPS="yes"
-      MAKE_TARGET="cross2"
+      MAKE_TARGET="cross"
 
     # CMake builds
     - TEST_NAME="compiler (CMake + CPack)"
diff --git a/Makefile.am b/Makefile.am
index bbe6f80..65dfe9d 100755
--- a/Makefile.am
+++ b/Makefile.am
@@ -37,16 +37,13 @@
 print-version:
 	@echo $(VERSION)
 
-.PHONY: precross cross cross2
+.PHONY: precross cross
 precross-%: all
 	$(MAKE) -C $* precross
 precross: all precross-test precross-lib
 
-cross: precross
-	sh test/test.sh
-
 # TODO: generate --server and --client switches from "--with(out)-..." build flags
-cross2: precross
+cross: precross
 	python test/test.py -s
 
 codespell_skip_files = \
diff --git a/test/Makefile.am b/test/Makefile.am
index 5bd2d0e..7b2e180 100755
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -69,7 +69,6 @@
 
 EXTRA_DIST = \
 	keys \
-	test.sh \
 	test.py \
 	tests.json \
 	c_glib \
diff --git a/test/README.md b/test/README.md
index bc1828c..ef874ac 100755
--- a/test/README.md
+++ b/test/README.md
@@ -1,17 +1,116 @@
 # Apache Thrift - integration test suite
 
 This is the cross everything integration test suite for Apache Thrift.
-executed by
+
+## Run
+
+### A. Using Make
+
+The test can be executed by:
 
     make cross
 
-at the moment, this starts the test.sh script which does the real cross test
-with different transports, protocols and languages.
+This starts the [test.py](test.py) script which does the real cross test with
+different transports, protocols and languages.
+
+Note that this requires basically everything to be built, otherwise test cases
+for missing languages will fail. If you skip building some languages, or simply
+need more control, read following section.
+
+### B. Using test script directly
+
+Alternatively, you can invoke [test.py](test.py) directly. You need to run`make
+precross` once before executing it for the first time.
+
+For example, if you changed something in `nodejs` library and need to verify
+the patch, you can skip everything except `nodejs` itself and some reference
+implementation (currently `cpp` and `java` are recommended) like this:
+
+    ./configure --without-c_glib -without-csharp --without-erlang --without-lua ...
+    make precross -j8
+    test/test.py --server cpp,java --client nodejs
+    test/test.py --server nodejs --client cpp,java
+
+## Test case definition file
+
+The cross test cases are defined in [tests.json](tests.json).
+The root element is collection of test target definitions.
+Each test target definition looks like this:
+
+    {
+      "name": "somelib",
+
+      "client": {
+        "command": ["somelib_client_executable"],
+        "workdir": "somelib/bin",
+        "protocols": ["binary"],
+        "transports": ["buffered"],
+        "sockets": ["ip"],
+      },
+      "server": {
+        "command": ["somelib_server_executable"],
+        "workdir": "somelib/bin",
+        "protocols": ["binary"],
+        "transports": ["buffered"],
+        "sockets": ["ip", "ip-ssl"],
+      }
+    }
+
+Either client or server definition or both should be present.
+
+Parameters that are common to both `client` and `server` can be put to target
+definition root:
+
+    {
+      "name": "somelib",
+
+      "workdir": "somelib/bin",
+      "protocols": ["binary"],
+      "transports": ["buffered"],
+      "sockets": ["ip"],
+
+      "client": { "command": ["somelib_client_executable"] },
+      "server": {
+        "command": ["somelib_server_executable"],
+        "sockets": ["ip-ssl"]
+      }
+    }
+
+For the complete list of supported keys and their effect, see source code
+comment at the opt of [crossrunner/collect.py](crossrunner/collect.py).
+
+
+## List of known failures
+
+Since many cross tests currently fail (mainly due to partial incompatibility
+around exception handling), the test script specifically report for "not known
+before" failures.
+
+For this purpose, test cases known to (occasionally) fail are listed in
+`known_failures_<platform>.json` where `<platform>` matches with python
+`platform.system()` string.
+
+Currently, only Linux version is included.
+
+FYI, the file is initially generated by
+
+    test/test.py --update-expected-failures=overwrite
+
+after a full test run, then repeatedly
+
+    test/test.py --skip-known-failures
+    test/test.py --update-expected-failures=merge
+
+## Test executable specification
+
+### Command line parameters
 
 Unit tests for languages are usually located under lib/<lang>/test/
 cross language tests according to [ThriftTest.thrift](ThriftTest.thrift) shall be
 provided for every language including executables with the following command
-line interface for servers:
+line interface:
+
+**Server command line interface:**
 
     $ ./cpp/TestServer -h
     Allowed options:
@@ -19,23 +118,23 @@
       --port arg (=9090)          Port number to listen
       --domain-socket arg         Unix Domain Socket (e.g. /tmp/ThriftTest.thrift)
       --named-pipe arg            Windows Named Pipe (e.g. MyThriftPipe)
-      --server-type arg (=simple) type of server, "simple", "thread-pool", 
+      --server-type arg (=simple) type of server, "simple", "thread-pool",
                                   "threaded", or "nonblocking"
       --transport arg (=buffered) transport: buffered, framed, http, anonpipe
       --protocol arg (=binary)    protocol: binary, compact, json
       --ssl                       Encrypted Transport using SSL
       --processor-events          processor-events
-      -n [ --workers ] arg (=4)   Number of thread pools workers. Only valid for 
+      -n [ --workers ] arg (=4)   Number of thread pools workers. Only valid for
                               thread-pool server type
 
-and this for clients:
+**Client command line interface:**
 
     $ ./cpp/TestClient -h
     Allowed options:
       -h [ --help ]               produce help message
       --host arg (=localhost)     Host to connect
       --port arg (=9090)          Port number to connect
-      --domain-socket arg         Domain Socket (e.g. /tmp/ThriftTest.thrift), 
+      --domain-socket arg         Domain Socket (e.g. /tmp/ThriftTest.thrift),
                                   instead of host and port
       --named-pipe arg            Windows Named Pipe (e.g. MyThriftPipe)
       --anon-pipes hRead hWrite   Windows Anonymous Pipes pair (handles)
@@ -43,13 +142,15 @@
       --protocol arg (=binary)    Protocol: binary, compact, json
       --ssl                       Encrypted Transport using SSL
       -n [ --testloops ] arg (=1) Number of Tests
-      -t [ --threads ] arg (=1)   Number of Test threads 
+      -t [ --threads ] arg (=1)   Number of Test threads
 
 If you have executed the **make check** or **make cross** then you will be able to browse
 [gen-html/ThriftTest.html](gen-html/ThriftTest.html) with the test documentation.
 
-The return code (exit code) shall be 0 on success, or an integer in the range 1 - 255 on errors. 
-In order to signal failed tests, the return code shall be composed from these bits to indicate 
+### Return code
+
+The return code (exit code) shall be 0 on success, or an integer in the range 1 - 255 on errors.
+In order to signal failed tests, the return code shall be composed from these bits to indicate
 failing tests:
 
       #define TEST_BASETYPES     1  // 0000 0001
@@ -59,16 +160,15 @@
       #define TEST_NOTUSED     240  // 1111 0000 (reserved bits)
 
 Tests that have not been executed at all count as errors.
-	  
-### Example: 
 
-During tests, the test client notices that some of the Struct tests fail. 
-Furthermore, due to some other problem none of the Exception tests is executed. 
-Therefore, the test client returns the code `10 = 2 | 8`, indicating the failure 
-of both test 2 (TEST_STRUCTS) and test 8 (TEST_EXCEPTIONS). 
+**Example:**
+
+During tests, the test client notices that some of the Struct tests fail.
+Furthermore, due to some other problem none of the Exception tests is executed.
+Therefore, the test client returns the code `10 = 2 | 8`, indicating the failure
+of both test 2 (TEST_STRUCTS) and test 8 (TEST_EXCEPTIONS).
 
 
 ## SSL
 Test Keys and Certificates are provided in multiple formats under the following
 directory [test/keys](keys)
-
diff --git a/test/crossrunner/collect.py b/test/crossrunner/collect.py
index 80a82e7..6c771b3 100644
--- a/test/crossrunner/collect.py
+++ b/test/crossrunner/collect.py
@@ -31,6 +31,13 @@
 # protocols: list of supported protocols
 # transports: list of supported transports
 # sockets: list of supported sockets
+#
+# protocols and transports entries can be colon separated "spec:impl" pair
+# (e.g. binary:accel) where test is run for any matching "spec" while actual
+# argument passed to test executable is "impl".
+# Otherwise "spec" is equivalent to "spec:spec" pair.
+# (e.g. "binary" is equivalent to "binary:bianry" in tests.json)
+#
 VALID_JSON_KEYS = [
   'name',  # name of the library, typically a language name
   'workdir',  # work directory where command is executed
@@ -78,7 +85,6 @@
       return v
     return cached_set(o1, key) & cached_set(o2, key)
 
-  # each entry can be spec:impl (e.g. binary:accel)
   def intersect_with_spec(key, o1, o2):
     # store as set of (spec, impl) tuple
     def cached_set(o):
diff --git a/test/crossrunner/report.py b/test/crossrunner/report.py
index da478fa..85e3c26 100644
--- a/test/crossrunner/report.py
+++ b/test/crossrunner/report.py
@@ -53,7 +53,7 @@
     known = load_known_failures(testdir)
     known.extend(fails)
     fails = known
-  fails_json = json.dumps(sorted(set(fails)), indent=2)
+  fails_json = json.dumps(sorted(set(fails)), indent=2, separators=(',', ': '))
   if save:
     with open(os.path.join(testdir, FAIL_JSON % platform.system()), 'w+') as fp:
       fp.write(fails_json)
@@ -284,6 +284,12 @@
         self.out.write(self._format_test(self._tests[i]))
       self._print_bar()
 
+  def _http_server_command(self, port):
+    if sys.version_info[0] < 3:
+      return 'python -m SimpleHTTPServer %d' % port
+    else:
+      return 'python -m http.server %d' % port
+
   def _print_footer(self):
     fail_count = len(self._expected_failure) + len(self._unexpected_failure)
     self._print_bar()
@@ -295,6 +301,10 @@
     self.out.writelines([
       'You can browse results at:\n',
       '\tfile://%s/%s\n' % (self.testdir, RESULT_HTML),
+      '# If you use Chrome, run:\n',
+      '# \tcd %s\n#\t%s\n' % (self.testdir, self._http_server_command(8001)),
+      '# then browse:\n',
+      '# \thttp://localhost:%d/%s\n' % (8001, RESULT_HTML),
       'Full log for each test is here:\n',
       '\ttest/log/client_server_protocol_transport_client.log\n',
       '\ttest/log/client_server_protocol_transport_server.log\n',
diff --git a/test/test.sh b/test/test.sh
deleted file mode 100755
index f7bf874..0000000
--- a/test/test.sh
+++ /dev/null
@@ -1,1436 +0,0 @@
-#!/bin/sh
-#
-# 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
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-#
-
-# Apache Thrift - integration test suite
-#
-# tests different client-server, protocol and transport combinations
-
-# related issues:
-# THRIFT-847 Test Framework harmonization across all languages
-# THRIFT-819 add Enumeration for protocol, transport and server types
-
-START_TIME=$SECONDS
-cd "$( dirname "$0" )"
-BASEDIR=$(pwd)
-
-TESTCOUNT=0
-FAILED=0
-
-print_header() {
-  printf "%-16s %-13s %-17s %-s\n" "client-server:" "protocol:" "transport:" "result:"
-}
-
-STATUS_HTML="status.html"
-
-print_html_header() {
-cat << EOF > $STATUS_HTML
-<!DOCTYPE HTML>
-<html>
-<head>
-<meta charset="utf-8">
-<title>Apache Thrift - integration test suite</title>
-<link rel="stylesheet" type="text/css" href="http://cdn.datatables.net/1.10.0/css/jquery.dataTables.css">
-<script type="text/javascript" charset="utf-8" src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
-<script type="text/javascript" charset="utf-8" src="http://cdn.datatables.net/1.10.0/js/jquery.dataTables.js"></script>
-<script>
-  var test_data;
-  \$(document).ready( function () {
-    testTable = \$('#test_results').DataTable( {
-      data: test_data
-    });
-  \$('#test_results_filter label input')
-    .focus()
-    .val('failure');
-  });
-</script>
-</head>
-<body>
-<h2>Apache Thrift - integration test suite: Results</h2>
-<table id="test_results" class="display">
-    <thead>
-        <tr>
-            <th>Server</th>
-            <th>Client</th>
-            <th>Protocol</th>
-            <th>Transport</th>
-            <th>Result (log)</th>
-        </tr>
-    </thead>
-</table>
-<script>
-test_data = [
-EOF
-}
-
-print_html_footer() {
-duration=$1
-cat << EOF >> $STATUS_HTML
-]
-</script>
-<h2>Test Information</h2>
-<pre>
-Test Date:     `date --iso-8601=seconds`
-Revision:      `git rev-parse --short HEAD`
-OS:            `uname -a`
-Test duration: $duration
-</pre>
-</body>
-</html>
-EOF
-}
-
-intersection() {
-  return_value=""
-  for one in $1; do
-    for two in $2; do
-      if [ ${one} = ${two} ]; then
-        return_value=${return_value}" "${one}
-      fi
-    done;
-  done;
-  echo ${return_value};
-}
-
-do_test () {
-    client_server=$1
-    protocol=$2
-    transport=$3
-    client_exec=$4
-    server_exec=$5
-    client_timeout=$6
-    server_startup_time=$7
-
-    testname=${client_server}_${protocol}_${transport}
-    server_timeout=$(echo "(${server_startup_time}+${client_timeout})" | bc)
-    printf "%-16s %-13s %-17s" ${client_server} ${protocol} ${transport}
-
-    timeout $server_timeout $server_exec > log/${testname}_server.log 2>&1 &
-    server_pid=$!
-
-    sleep $server_startup_time
-    timeout $client_timeout $client_exec > log/${testname}_client.log 2>&1
-
-    if [ "$?" -eq "0" ]; then
-      result="success($?)"
-      echo " $result"
-    else
-      result="failure($?)"
-      echo " $result"
-      # add details to the error.log
-      print_header >> log/error.log
-      printf "%-16s %-11s %-17s\n" ${client_server} ${protocol} ${transport} >> log/error.log
-      echo "=================== server message ===================" >> log/error.log
-      tail log/${testname}_server.log  >> log/error.log
-      echo "=================== client message ===================" >> log/error.log
-      tail log/${testname}_client.log >> log/error.log
-      echo "======================================================" >> log/error.log
-      echo "" >> log/error.log
-      FAILED=$(($FAILED + 1))
-    fi
-    TESTCOUNT=$(($TESTCOUNT + 1))
-
-    # split client-server string
-    client=${client_server%-*}
-    server=${client_server#*-}
-
-    cat << EOF >> $STATUS_HTML
-      [
-        "${server}",
-        "${client}",
-        "${protocol}",
-        "${transport}",
-        "${result} (<a href=\"log/${testname}_client.log\">client</a>, <a href=\"log/${testname}_server.log\">server</a>)"
-      ],
-EOF
-
-    # silently kill server
-    kill ${server_pid} 2>/dev/null && wait ${server_pid} 2>/dev/null
-}
-
-echo "Apache Thrift - integration test suite"
-if [ "$#" -eq "0" ]; then
-  THRIFT_TEST_PORT=9090
-else
-  THRIFT_TEST_PORT=$1
-fi
-date
-
-
-echo "======================================================"
-
-rm -rf log
-mkdir -p log
-
-
-print_header
-print_html_header
-
-ant -f ../lib/java/build.xml compile-test 1>/dev/null
-
-
-#TODO add enum for parameters
-#TODO align program arguments across languages
-
-cpp_protocols="binary compact json"
-java_protocols="binary compact json"
-cpp_transports="buffered framed http"
-java_server_transports="buffered framed fastframed"
-java_client_transports=${java_server_transports}" http"
-cpp_sockets="ip domain ip-ssl"
-java_sockets="ip ip-ssl"
-# TODO fastframed java transport is another implementation of framed transport
-
-c_glib_protocols="binary"
-c_glib_transports="buffered framed"
-c_glib_sockets="ip"
-
-# only test tcp type for now like the original cross test.
-# other nodejs types can be enabled in a separate patch.
-nodejs_types="tcp" # "tcp multiplex http websocket"
-nodejs_protocols="binary compact json"
-nodejs_transports="buffered framed"
-nodejs_sockets="ip ip-ssl"
-
-csharp_protocols="binary compact json"
-csharp_transports="buffered framed"
-csharp_sockets="ip ip-ssl"
-
-py_protocols="binary compact json accel"
-py_transports="buffered framed"
-py_sockets="ip ip-ssl"
-
-ruby_protocols="binary compact json accel"
-ruby_transports="buffered framed"
-ruby_sockets="ip"
-
-hs_protocols="binary compact json"
-hs_transports="buffered"
-hs_sockets="ip"
-
-######### java client - java server #############
-for proto in $java_protocols; do
-  for trans in $java_server_transports; do
-    for sock in $java_sockets; do
-      case "$sock" in
-        "ip" ) extraparam="";;
-        "ip-ssl" ) extraparam="--ssl";;
-      esac
-      do_test "java-java" "${proto}" "${trans}-${sock}" \
-              "ant -f  ../lib/java/build.xml -Dno-gen-thrift=\"\" -Dtestargs \"--protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}\" run-testclient" \
-              "ant -f  ../lib/java/build.xml -Dno-gen-thrift=\"\" -Dtestargs \"--protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}\" run-testserver" \
-              "5" "1"
-    done
-  done
-done
-
-######### cpp client - cpp server ###############
-for proto in $cpp_protocols; do
-  for trans in $cpp_transports; do
-    for sock in $cpp_sockets; do
-      case "$sock" in
-       "ip" )     extraparam="";;
-       "ip-ssl" ) extraparam="--ssl";;
-       "domain" ) extraparam="--domain-socket=/tmp/ThriftTest.thrift";;
-      esac
-      do_test "cpp-cpp"   "${proto}" "${trans}-${sock}" \
-              "cpp/TestClient --protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "cpp/TestServer --protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "2" "0.1"
-    done
-  done
-done
-
-
-######### java client - cpp server ##############
-# warning: ssl over http is not supported in java client!
-for proto in $(intersection "${java_protocols}" "${cpp_protocols}"); do
-  for trans in $(intersection "${java_client_transports}" "${cpp_transports}"); do
-    for sock in $(intersection "${java_sockets}" "${cpp_sockets}"); do
-      case "$sock" in
-        "ip" ) extraparam="";;
-        "ip-ssl" ) extraparam="--ssl";;
-      esac
-      do_test "java-cpp" "${proto}" "${trans}-${sock}" \
-              "ant -f  ../lib/java/build.xml -Dno-gen-thrift=\"\" -Dtestargs \"--protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}\" run-testclient" \
-              "cpp/TestServer --protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}"\
-              "5" "0.1"
-    done
-  done
-done
-
-######### cpp client - java server ##############
-for proto in $(intersection "${cpp_protocols}" "${java_protocols}"); do
-  for trans in $(intersection "${cpp_transports}" "${java_server_transports}"); do
-    for sock in $(intersection "${java_sockets}" "${cpp_sockets}"); do
-      case "$sock" in
-        "ip" ) extraparam="";;
-        "ip-ssl" ) extraparam="--ssl";;
-      esac
-      do_test "cpp-java" "${proto}" "${trans}-${sock}" \
-              "cpp/TestClient --protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "ant -f  ../lib/java/build.xml -Dno-gen-thrift=\"\" -Dtestargs \"--protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT}  ${extraparam}\" run-testserver" \
-              "5" "1"
-    done
-  done
-done
-
-######### c_glib client - c_glib server ##############
-for proto in ${c_glib_protocols}; do
-  for trans in ${c_glib_transports}; do
-    for sock in ${c_glib_sockets}; do
-      case "$sock" in
-        "ip" ) extraparam="";;
-        "ip-ssl" ) extraparam="--ssl";;
-        "domain" ) extraparam="--domain-socket=/tmp/ThriftTest.thrift";;
-      esac
-      do_test "c_glib-c_glib" "${proto}" "${trans}-${sock}" \
-              "c_glib/test_client --protocol=${proto}  --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "c_glib/test_server --protocol=${proto}  --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "2" "0.1"
-    done
-  done
-done
-
-######### c_glib client - cpp server ##############
-for proto in $(intersection "${c_glib_protocols}" "${cpp_protocols}"); do
-  for trans in $(intersection "${c_glib_transports}" "${cpp_transports}"); do
-    for sock in $(intersection "${c_glib_sockets}" "${cpp_sockets}"); do
-      case "$sock" in
-        "ip" ) extraparam="";;
-        "ip-ssl" ) extraparam="--ssl";;
-        "domain" ) extraparam="--domain-socket=/tmp/ThriftTest.thrift";;
-      esac
-      do_test "c_glib-cpp" "${proto}" "${trans}-${sock}" \
-              "c_glib/test_client --protocol=${proto}  --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "cpp/TestServer --protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}"\
-              "2" "0.1"
-    done
-  done
-done
-
-######### cpp client - c_glib server ##############
-for proto in $(intersection "${cpp_protocols}" "${c_glib_protocols}"); do
-  for trans in $(intersection "${cpp_transports}" "${c_glib_transports}"); do
-    for sock in $(intersection "${cpp_sockets}" "${c_glib_sockets}"); do
-      case "$sock" in
-        "ip" ) extraparam="";;
-        "ip-ssl" ) extraparam="--ssl";;
-        "domain" ) extraparam="--domain-socket=/tmp/ThriftTest.thrift";;
-      esac
-      do_test "cpp-c_glib" "${proto}" "${trans}-${sock}" \
-              "cpp/TestClient --protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}"\
-              "c_glib/test_server --protocol=${proto}  --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "2" "0.1"
-    done
-  done
-done
-
-######### c_glib client - java server ##############
-for proto in $(intersection "${c_glib_protocols}" "${java_protocols}"); do
-  for trans in $(intersection "${c_glib_transports}" "${java_server_transports}"); do
-    for sock in $(intersection "${c_glib_sockets}" "${java_sockets}"); do
-      case "$sock" in
-        "ip" ) extraparam="";;
-        "ip-ssl" ) extraparam="--ssl";;
-      esac
-      do_test "c_glib-java" "${proto}" "${trans}-${sock}" \
-              "c_glib/test_client --protocol=${proto}  --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "ant -f ../lib/java/build.xml -Dno-gen-thrift=\"\" -Dtestargs \"--protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}\" run-testserver" \
-              "2" "2"
-    done
-  done
-done
-
-######### java client - c_glib server ##############
-for proto in $(intersection "${java_protocols}" "${c_glib_protocols}"); do
-  for trans in $(intersection "${java_client_transports}" "${c_glib_transports}"); do
-    for sock in $(intersection "${java_sockets}" "${c_glib_sockets}"); do
-      case "$sock" in
-        "ip" ) extraparam="";;
-        "ip-ssl" ) extraparam="--ssl";;
-      esac
-      do_test "java-c_glib" "${proto}" "${trans}-${sock}" \
-              "ant -f  ../lib/java/build.xml -Dno-gen-thrift=\"\" -Dtestargs \"--protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}\" run-testclient" \
-              "c_glib/test_server --protocol=${proto}  --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "5" "0.1"
-    done
-  done
-done
-
-
-NODE_TEST_DIR=${BASEDIR}/../lib/nodejs/test
-export NODE_PATH=${NODE_TEST_DIR}:${NODE_TEST_DIR}/../lib:${NODE_PATH}
-######### nodejs client - nodejs server ##############
-for type in ${nodejs_types}; do
-  for proto in ${nodejs_protocols}; do
-    for trans in ${nodejs_transports}; do
-      for sock in ${nodejs_sockets}; do
-        case "$sock" in
-          "ip" ) extraparam="";;
-          "ip-ssl" ) extraparam="--ssl";;
-        esac
-        do_test "nodejs-nodejs" "${proto}" "${trans}-${sock}" \
-                "node ${NODE_TEST_DIR}/client.js --type ${type} -p ${proto} -t ${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-                "node ${NODE_TEST_DIR}/server.js --type ${type} -p ${proto} -t ${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-                "5" "0.2"
-      done
-    done
-  done
-done
-
-######### nodejs client - cpp server ##############
-for type in ${nodejs_types}; do
-  for proto in $(intersection "${nodejs_protocols}" "${cpp_protocols}"); do
-    for trans in $(intersection "${nodejs_transports}" "${cpp_transports}"); do
-      for sock in $(intersection "${nodejs_sockets}" "${cpp_sockets}"); do
-        case "$sock" in
-          "ip" ) extraparam="";;
-          "ip-ssl" ) extraparam="--ssl";;
-        esac
-        do_test "nodejs-cpp" "${proto}" "${trans}-${sock}" \
-                "node ${NODE_TEST_DIR}/client.js --type ${type} -p ${proto} -t ${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-                "cpp/TestServer --protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-                "5" "0.2"
-      done
-    done
-  done
-done
-
-######### cpp client - nodejs server ##############
-for type in ${nodejs_types}; do
-  for proto in $(intersection "${nodejs_protocols}" "${cpp_protocols}"); do
-    for trans in $(intersection "${nodejs_transports}" "${cpp_transports}"); do
-      for sock in $(intersection "${nodejs_sockets}" "${cpp_sockets}"); do
-        case "$sock" in
-          "ip" ) extraparam="";;
-          "ip-ssl" ) extraparam="--ssl";;
-        esac
-        do_test "cpp-nodejs" "${proto}" "${trans}-${sock}" \
-                "cpp/TestClient --protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-                "node ${NODE_TEST_DIR}/server.js --type ${type} -p ${proto} -t ${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-                "5" "2"
-      done
-    done
-  done
-done
-
-######### nodejs client - java server ##############
-for type in ${nodejs_types}; do
-  for proto in $(intersection "${nodejs_protocols}" "${java_protocols}"); do
-    for trans in $(intersection "${nodejs_transports}" "${java_server_transports}"); do
-      for sock in $(intersection "${nodejs_sockets}" "${java_sockets}"); do
-        case "$sock" in
-          "ip" ) extraparam="";;
-          "ip-ssl" ) extraparam="--ssl";;
-        esac
-        do_test "nodejs-java" "${proto}" "${trans}-${sock}" \
-                "node ${NODE_TEST_DIR}/client.js --type ${type} -p ${proto} -t ${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-                "ant -f  ../lib/java/build.xml -Dno-gen-thrift=\"\" -Dtestargs \"--protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}\" run-testserver" \
-                "5" "1"
-      done
-    done
-  done
-done
-
-######### java client - nodejs server ##############
-for type in ${nodejs_types}; do
-  for proto in $(intersection "${nodejs_protocols}" "${java_protocols}"); do
-    for trans in $(intersection "${nodejs_transports}" "${java_client_transports}"); do
-      for sock in $(intersection "${nodejs_sockets}" "${java_sockets}"); do
-        case "$sock" in
-          "ip" ) extraparam="";;
-          "ip-ssl" ) extraparam="--ssl";;
-        esac
-        do_test "java-nodejs" "${proto}" "${trans}-${sock}" \
-                "ant -f  ../lib/java/build.xml -Dno-gen-thrift=\"\" -Dtestargs \"--protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}\" run-testclient" \
-                "node ${NODE_TEST_DIR}/server.js --type ${type} -p ${proto} -t ${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-                "5" "2"
-      done
-    done
-  done
-done
-
-######### nodejs client - c_glib server ##############
-for type in ${nodejs_types}; do
-  for proto in $(intersection "${nodejs_protocols}" "${c_glib_protocols}"); do
-    for trans in $(intersection "${nodejs_transports}" "${c_glib_transports}"); do
-      for sock in $(intersection "${nodejs_sockets}" "${c_glib_sockets}"); do
-        case "$sock" in
-          "ip" ) extraparam="";;
-          "ip-ssl" ) extraparam="--ssl";;
-        esac
-        do_test "nodejs-c_glib" "${proto}" "${trans}-${sock}" \
-                "node ${NODE_TEST_DIR}/client.js --type ${type} -p ${proto} -t ${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-                "c_glib/test_server --protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-                "5" "0.1"
-      done
-    done
-  done
-done
-
-######### c_glib client - nodejs server ##############
-for type in ${nodejs_types}; do
-  for proto in $(intersection "${c_glib_protocols}" "${nodejs_protocols}"); do
-    for trans in $(intersection "${c_glib_transports}" "${nodejs_transports}"); do
-      for sock in $(intersection "${c_glib_sockets}" "${nodejs_sockets}"); do
-        case "$sock" in
-          "ip" ) extraparam="";;
-          "ip-ssl" ) extraparam="--ssl";;
-        esac
-        do_test "c_glib-nodejs" "${proto}" "${trans}-${sock}" \
-                "c_glib/test_client --protocol=${proto}  --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-                "node ${NODE_TEST_DIR}/server.js --type ${type} -p ${proto} -t ${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-                "2" "2"
-      done
-    done
-  done
-done
-
-######### py client - py server ##############
-for proto in ${py_protocols}; do
-  for trans in ${py_transports}; do
-    for sock in ${py_sockets}; do
-      case "$sock" in
-        "ip" ) extraparam="";;
-        "ip-ssl" ) extraparam="--ssl";;
-      esac
-      do_test "py-py" "${proto}" "${trans}-${sock}" \
-              "py/TestClient.py --protocol=${proto} --transport={trans} --port=${THRIFT_TEST_PORT} --host=localhost --genpydir=gen-py ${extraparam}" \
-              "py/TestServer.py --protocol=${proto} --transport={trans} --port=${THRIFT_TEST_PORT} --genpydir=gen-py TSimpleServer ${extraparam}" \
-              "10" "2"
-    done
-  done
-done
-
-for trans in ${py_transports}; do
-    for sock in ${py_sockets}; do
-      case "$sock" in
-        "ip" ) extraparam="";;
-        "ip-ssl" ) extraparam="--ssl";;
-      esac
-      do_test "py-py" "accel-binary" "${trans}-${sock}" \
-              "py/TestClient.py --protocol=accel --transport=${trans} --port=${THRIFT_TEST_PORT} --host=localhost --genpydir=gen-py ${extraparam}" \
-              "py/TestServer.py --protocol=binary --transport=${trans} --port=${THRIFT_TEST_PORT} --genpydir=gen-py TSimpleServer ${extraparam}" \
-              "10" "2"
-      do_test "py-py" "binary-accel" "${trans}-${sock}" \
-              "py/TestClient.py --protocol=binary --transport={trans} --port=${THRIFT_TEST_PORT} --host=localhost --genpydir=gen-py ${extraparam}" \
-              "py/TestServer.py --protocol=accel --transport={trans} --port=${THRIFT_TEST_PORT} --genpydir=gen-py TSimpleServer ${extraparam}" \
-              "10" "2"
-    done
-  done
-
-######### py client - cpp server ##############
-for proto in $(intersection "${cpp_protocols}" "${py_protocols}"); do
-  for trans in $(intersection "${cpp_transports}" "${py_transports}"); do
-    for sock in $(intersection "${cpp_sockets}" "${py_sockets}"); do
-      case "$sock" in
-        "ip" ) extraparam="";;
-        "ip-ssl" ) extraparam="--ssl";;
-      esac
-      do_test "py-cpp" "${proto}" "${trans}-${sock}" \
-              "py/TestClient.py --protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} --host=localhost --genpydir=gen-py ${extraparam}" \
-              "cpp/TestServer --protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "10" "2"
-    done
-  done
-done
-
-for trans in $(intersection "${cpp_transports}" "${py_transports}"); do
-    for sock in $(intersection "${cpp_sockets}" "${py_sockets}"); do
-      case "$sock" in
-        "ip" ) extraparam="";;
-        "ip-ssl" ) extraparam="--ssl";;
-      esac
-      do_test "py-cpp" "accel-binary" "${trans}-${sock}" \
-              "py/TestClient.py --protocol=accel --transport=${trans} --port=${THRIFT_TEST_PORT} --host=localhost --genpydir=gen-py ${extraparam}" \
-              "cpp/TestServer --protocol=binary --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "10" "2"
-    done
-  done
-
-######### cpp client - py server ##############
-for proto in $(intersection "${cpp_protocols}" "${py_protocols}"); do
-  for trans in $(intersection "${cpp_transports}" "${py_transports}"); do
-    for sock in $(intersection "${cpp_sockets}" "${py_sockets}"); do
-      case "$sock" in
-        "ip" ) extraparam="";;
-        "ip-ssl" ) extraparam="--ssl";;
-      esac
-      do_test "cpp-py" "${proto}" "${trans}-${sock}" \
-              "cpp/TestClient --protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "py/TestServer.py --protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} --genpydir=gen-py TSimpleServer ${extraparam}" \
-              "10" "2"
-    done
-  done
-done
-
-for trans in $(intersection "${cpp_transports}" "${py_transports}"); do
-    for sock in $(intersection "${cpp_sockets}" "${py_sockets}"); do
-      case "$sock" in
-        "ip" ) extraparam="";;
-        "ip-ssl" ) extraparam="--ssl";;
-      esac
-      do_test "cpp-py" "binary-accel" "${trans}-${sock}" \
-              "cpp/TestClient --protocol=binary --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "py/TestServer.py --protocol=accel --transport=${trans} --port=${THRIFT_TEST_PORT} --genpydir=gen-py TSimpleServer ${extraparam}" \
-              "10" "2"
-    done
-  done
-
-######### py client - java server ##############
-for proto in $(intersection "${py_protocols}" "${java_protocols}"); do
-  for trans in $(intersection "${py_transports}" "${java_server_transports}"); do
-    for sock in $(intersection "${py_sockets}" "${java_sockets}"); do
-      case "$sock" in
-        "ip" ) extraparam="";;
-        "ip-ssl" ) extraparam="--ssl";;
-      esac
-      do_test "py-java" "${proto}" "${trans}-${sock}" \
-              "py/TestClient.py --protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} --host=localhost --genpydir=gen-py ${extraparam}" \
-              "ant -f  ../lib/java/build.xml -Dno-gen-thrift=\"\" -Dtestargs \"--protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}\" run-testserver" \
-              "15" "2"
-    done
-  done
-done
-
-for trans in $(intersection "${py_transports}" "${java_server_transports}"); do
-    for sock in $(intersection "${py_sockets}" "${java_sockets}"); do
-      case "$sock" in
-        "ip" ) extraparam="";;
-        "ip-ssl" ) extraparam="--ssl";;
-      esac
-      do_test "py-java" "accel-binary" "${trans}-${sock}" \
-              "py/TestClient.py --protocol=accel --transport=${trans} --port=${THRIFT_TEST_PORT} --host=localhost --genpydir=gen-py ${extraparam}" \
-              "ant -f  ../lib/java/build.xml -Dno-gen-thrift=\"\" -Dtestargs \"--protocol=binary --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}\" run-testserver" \
-              "15" "2"
-    done
-  done
-
-######### java client - py server ##############
-for proto in $(intersection "${py_protocols}" "${java_protocols}"); do
-  for trans in $(intersection "${py_transports}" "${java_client_transports}"); do
-    for sock in $(intersection "${py_sockets}" "${java_sockets}"); do
-      case "$sock" in
-        "ip" ) extraparam="";;
-        "ip-ssl" ) extraparam="--ssl";;
-      esac
-      do_test "java-py" "${proto}" "${trans}-${sock}" \
-              "ant -f  ../lib/java/build.xml -Dno-gen-thrift=\"\" -Dtestargs \"--protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}\" run-testclient" \
-              "py/TestServer.py --protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} --genpydir=gen-py TSimpleServer ${extraparam}" \
-              "10" "5"
-    done
-  done
-done
-
-for trans in $(intersection "${py_transports}" "${java_client_transports}"); do
-    for sock in $(intersection "${py_sockets}" "${java_sockets}"); do
-      case "$sock" in
-        "ip" ) extraparam="";;
-        "ip-ssl" ) extraparam="--ssl";;
-      esac
-      do_test "java-py" "binary-accel" "${trans}-${sock}" \
-              "ant -f  ../lib/java/build.xml -Dno-gen-thrift=\"\" -Dtestargs \"--protocol=binary --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}\" run-testclient" \
-              "py/TestServer.py --protocol=accel --transport=${trans} --port=${THRIFT_TEST_PORT} --genpydir=gen-py TSimpleServer ${extraparam}" \
-              "10" "5"
-    done
-  done
-
-######### py client - c_glib server ##############
-for proto in $(intersection "${py_protocols}" "${c_glib_protocols}"); do
-  for trans in $(intersection "${py_transports}" "${c_glib_transports}"); do
-    for sock in $(intersection "${py_sockets}" "${c_glib_sockets}"); do
-      case "$sock" in
-        "ip" ) extraparam="";;
-        "ip-ssl" ) extraparam="--ssl";;
-      esac
-      do_test "py-c_glib" "${proto}" "${trans}-${sock}" \
-              "py/TestClient.py --protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} --host=localhost --genpydir=gen-py ${extraparam}" \
-              "c_glib/test_server --protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "10" "0.1"
-    done
-  done
-done
-
-for trans in $(intersection "${py_transports}" "${c_glib_transports}"); do
-    for sock in $(intersection "${py_sockets}" "${c_glib_sockets}"); do
-      case "$sock" in
-        "ip" ) extraparam="";;
-        "ip-ssl" ) extraparam="--ssl";;
-      esac
-      do_test "py-c_glib" "accel-binary" "${trans}-${sock}" \
-              "py/TestClient.py --protocol=accel --transport=${trans} --port=${THRIFT_TEST_PORT} --host=localhost --genpydir=gen-py ${extraparam}" \
-              "c_glib/test_server --protocol=binary --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "10" "0.1"
-    done
-  done
-
-######### c_glib client - py server ##############
-for proto in $(intersection "${c_glib_protocols}" "${py_protocols}"); do
-  for trans in $(intersection "${c_glib_transports}" "${py_transports}"); do
-    for sock in $(intersection "${c_glib_sockets}" "${py_sockets}"); do
-      case "$sock" in
-        "ip" ) extraparam="";;
-        "ip-ssl" ) extraparam="--ssl";;
-      esac
-      do_test "c_glib-py" "${proto}" "${trans}-${sock}" \
-              "c_glib/test_client --protocol=${proto}  --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "py/TestServer.py --protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} --genpydir=gen-py TSimpleServer ${extraparam}" \
-              "2" "2"
-    done
-  done
-done
-
-for trans in $(intersection "${c_glib_transports}" "${py_transports}"); do
-    for sock in $(intersection "${c_glib_sockets}" "${py_sockets}"); do
-      case "$sock" in
-        "ip" ) extraparam="";;
-        "ip-ssl" ) extraparam="--ssl";;
-      esac
-      do_test "c_glib-py" "binary-accel" "${trans}-${sock}" \
-              "c_glib/test_client --protocol=binary --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "py/TestServer.py --protocol=accel --transport=${trans} --port=${THRIFT_TEST_PORT} --genpydir=gen-py TSimpleServer ${extraparam}" \
-              "10" "2"
-    done
-  done
-
-######### py client - nodejs server ##############
-for type in ${nodejs_types}; do
-  for proto in $(intersection "${py_protocols}" "${nodejs_protocols}"); do
-    for trans in $(intersection "${py_transports}" "${nodejs_transports}"); do
-      for sock in $(intersection "${py_sockets}" "${nodejs_sockets}"); do
-        case "$sock" in
-          "ip" ) extraparam="";;
-          "ip-ssl" ) extraparam="--ssl";;
-        esac
-        do_test "py-nodejs" "${proto}" "${trans}-${sock}" \
-                "py/TestClient.py --protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} --host=localhost --genpydir=gen-py ${extraparam}" \
-                "node ${NODE_TEST_DIR}/server.js --type ${type} -p ${proto} -t ${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-                "15" "2"
-      done
-    done
-  done
-done
-
-for type in ${nodejs_types}; do
-  for trans in $(intersection "${py_transports}" "${nodejs_transports}"); do
-    for sock in $(intersection "${py_sockets}" "${nodejs_sockets}"); do
-      case "$sock" in
-        "ip" ) extraparam="";;
-        "ip-ssl" ) extraparam="--ssl";;
-      esac
-      do_test "py-nodejs" "${proto}" "${trans}-${sock}" \
-              "py/TestClient.py --protocol=accel --transport=${trans} --port=${THRIFT_TEST_PORT} --host=localhost --genpydir=gen-py ${extraparam}" \
-              "node ${NODE_TEST_DIR}/server.js --type ${type} -p binary -t ${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "15" "2"
-    done
-  done
-done
-
-######### nodejs client - py server ##############
-for type in ${nodejs_types}; do
-  for proto in $(intersection "${py_protocols}" "${nodejs_protocols}"); do
-    for trans in $(intersection "${py_transports}" "${nodejs_transports}"); do
-      for sock in $(intersection "${py_sockets}" "${nodejs_sockets}"); do
-        case "$sock" in
-          "ip" ) extraparam="";;
-          "ip-ssl" ) extraparam="--ssl";;
-        esac
-        do_test "nodejs-py" "${proto}" "${trans}-${sock}" \
-                "node ${NODE_TEST_DIR}/client.js --type ${type} -p ${proto} -t ${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-                "py/TestServer.py --protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} --genpydir=gen-py TSimpleServer ${extraparam}" \
-                "10" "2"
-      done
-    done
-  done
-done
-
-for type in ${nodejs_types}; do
-  for trans in $(intersection "${py_transports}" "${nodejs_transports}"); do
-    for sock in $(intersection "${py_sockets}" "${nodejs_sockets}"); do
-      case "$sock" in
-        "ip" ) extraparam="";;
-        "ip-ssl" ) extraparam="--ssl";;
-      esac
-      do_test "nodejs-py" "binary-accel" "${trans}-${sock}" \
-              "node ${NODE_TEST_DIR}/client.js --type ${type} -p binary -t ${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "py/TestServer.py --protocol=accel --transport=${trans} --port=${THRIFT_TEST_PORT} --genpydir=gen-py TSimpleServer ${extraparam}" \
-              "10" "2"
-    done
-  done
-done
-
-######### ruby client - ruby server ##############
-for proto in ${ruby_protocols}; do
-  for trans in ${ruby_transports}; do
-    for sock in ${ruby_sockets}; do
-      case "$sock" in
-        "ip" ) extraparam="";;
-        "ip-ssl" ) extraparam="--ssl";;
-      esac
-      do_test "ruby-ruby" "${proto}" "${trans}-${sock}" \
-              "ruby rb/integration/TestClient.rb --protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "ruby rb/integration/TestServer.rb --protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "5" "5"
-    done
-  done
-done
-
-for trans in ${ruby_transports}; do
-    for sock in ${ruby_sockets}; do
-      case "$sock" in
-        "ip" ) extraparam="";;
-        "ip-ssl" ) extraparam="--ssl";;
-      esac
-      do_test "ruby-ruby" "accel-binary" "${trans}-${sock}" \
-              "ruby rb/integration/TestClient.rb --protocol=accel --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "ruby rb/integration/TestServer.rb --protocol=binary --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "5" "5"
-      do_test "ruby-ruby" "binary-accel" "${trans}-${sock}" \
-              "ruby rb/integration/TestClient.rb --protocol=binary --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "ruby rb/integration/TestServer.rb --protocol=accel --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "5" "5"
-    done
-  done
-
-######### ruby client - cpp server ##############
-for proto in $(intersection "${cpp_protocols}" "${ruby_protocols}"); do
-  for trans in $(intersection "${cpp_transports}" "${ruby_transports}"); do
-    for sock in $(intersection "${cpp_sockets}" "${ruby_sockets}"); do
-      case "$sock" in
-        "ip" ) extraparam="";;
-        "ip-ssl" ) extraparam="--ssl";;
-      esac
-      do_test "ruby-cpp" "${proto}" "${trans}-${sock}" \
-              "ruby rb/integration/TestClient.rb --protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "cpp/TestServer --protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "5" "5"
-    done
-  done
-done
-
-for trans in $(intersection "${cpp_transports}" "${ruby_transports}"); do
-    for sock in $(intersection "${cpp_sockets}" "${ruby_sockets}"); do
-      case "$sock" in
-        "ip" ) extraparam="";;
-        "ip-ssl" ) extraparam="--ssl";;
-      esac
-      do_test "ruby-cpp" "accel-binary" "${trans}-${sock}" \
-              "ruby rb/integration/TestClient.rb --protocol=accel --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "cpp/TestServer --protocol=binary --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "5" "5"
-    done
-  done
-
-######### cpp client - ruby server ##############
-for proto in $(intersection "${cpp_protocols}" "${ruby_protocols}"); do
-  for trans in $(intersection "${cpp_transports}" "${ruby_transports}"); do
-    for sock in $(intersection "${cpp_sockets}" "${ruby_sockets}"); do
-      case "$sock" in
-        "ip" ) extraparam="";;
-        "ip-ssl" ) extraparam="--ssl";;
-      esac
-      do_test "cpp-ruby" "${proto}" "${trans}-${sock}" \
-              "cpp/TestClient --protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} --port=${THRIFT_TEST_PORT} --port=${THRIFT_TEST_PORT} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "ruby rb/integration/TestServer.rb --protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} --port=${THRIFT_TEST_PORT} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "5" "5"
-    done
-  done
-done
-
-for trans in $(intersection "${cpp_transports}" "${ruby_transports}"); do
-    for sock in $(intersection "${cpp_sockets}" "${ruby_sockets}"); do
-      case "$sock" in
-        "ip" ) extraparam="";;
-        "ip-ssl" ) extraparam="--ssl";;
-      esac
-      do_test "cpp-ruby" "binary-accel" "${trans}-${sock}" \
-              "cpp/TestClient --protocol=binary --transport=${trans} --port=${THRIFT_TEST_PORT} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "ruby rb/integration/TestServer.rb --protocol=accel --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "5" "5"
-    done
-  done
-
-######### ruby client - java server ##############
-for proto in $(intersection "${ruby_protocols}" "${java_protocols}"); do
-  for trans in $(intersection "${ruby_transports}" "${java_server_transports}"); do
-    for sock in $(intersection "${ruby_sockets}" "${java_sockets}"); do
-      case "$sock" in
-        "ip" ) extraparam="";;
-        "ip-ssl" ) extraparam="--ssl";;
-      esac
-      do_test "ruby-java" "${proto}" "${trans}-${sock}" \
-              "ruby rb/integration/TestClient.rb --protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "ant -f  ../lib/java/build.xml -Dno-gen-thrift=\"\" -Dtestargs \"--protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}\" run-testserver" \
-              "15" "5"
-    done
-  done
-done
-
-for trans in $(intersection "${ruby_transports}" "${java_server_transports}"); do
-    for sock in $(intersection "${ruby_sockets}" "${java_sockets}"); do
-      case "$sock" in
-        "ip" ) extraparam="";;
-        "ip-ssl" ) extraparam="--ssl";;
-      esac
-      do_test "ruby-java" "accel-binary" "${trans}-${sock}" \
-              "ruby rb/integration/TestClient.rb --protocol=accel --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "ant -f  ../lib/java/build.xml -Dno-gen-thrift=\"\" -Dtestargs \"--protocol=binary --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}\" run-testserver" \
-              "15" "5"
-    done
-  done
-
-######### java client - ruby server ##############
-for proto in $(intersection "${ruby_protocols}" "${java_protocols}"); do
-  for trans in $(intersection "${ruby_transports}" "${java_client_transports}"); do
-    for sock in $(intersection "${ruby_sockets}" "${java_sockets}"); do
-      case "$sock" in
-        "ip" ) extraparam="";;
-        "ip-ssl" ) extraparam="--ssl";;
-      esac
-      do_test "java-ruby" "${proto}" "${trans}-${sock}" \
-              "ant -f  ../lib/java/build.xml -Dno-gen-thrift=\"\" -Dtestargs \"--protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}\" run-testclient" \
-              "ruby rb/integration/TestServer.rb --protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "10" "5"
-    done
-  done
-done
-
-for trans in $(intersection "${ruby_transports}" "${java_client_transports}"); do
-    for sock in $(intersection "${ruby_sockets}" "${java_sockets}"); do
-      case "$sock" in
-        "ip" ) extraparam="";;
-        "ip-ssl" ) extraparam="--ssl";;
-      esac
-      do_test "java-ruby" "binary-accel" "${trans}-${sock}" \
-              "ant -f  ../lib/java/build.xml -Dno-gen-thrift=\"\" -Dtestargs \"--protocol=binary --transport=${trans} --port=${THRIFT_TEST_PORT} --port=${THRIFT_TEST_PORT} ${extraparam}\" run-testclient" \
-              "ruby rb/integration/TestServer.rb --protocol=accel --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "10" "5"
-    done
-  done
-
-######### ruby client - c_glib server ##############
-for proto in $(intersection "${ruby_protocols}" "${c_glib_protocols}"); do
-  for trans in $(intersection "${ruby_transports}" "${c_glib_transports}"); do
-    for sock in $(intersection "${ruby_sockets}" "${c_glib_sockets}"); do
-      case "$sock" in
-        "ip" ) extraparam="";;
-        "ip-ssl" ) extraparam="--ssl";;
-      esac
-      do_test "ruby-c_glib" "${proto}" "${trans}-${sock}" \
-              "ruby rb/integration/TestClient.rb --protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "c_glib/test_server --protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "5" "0.1"
-    done
-  done
-done
-
-for trans in $(intersection "${ruby_transports}" "${c_glib_transports}"); do
-    for sock in $(intersection "${ruby_sockets}" "${c_glib_sockets}"); do
-      case "$sock" in
-        "ip" ) extraparam="";;
-        "ip-ssl" ) extraparam="--ssl";;
-      esac
-      do_test "ruby-c_glib" "accel-binary" "${trans}-${sock}" \
-              "ruby rb/integration/TestClient.rb --protocol=accel --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "c_glib/test_server --protocol=binary --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "5" "0.1"
-    done
-  done
-
-######### c_glib client - ruby server ##############
-for proto in $(intersection "${c_glib_protocols}" "${ruby_protocols}"); do
-  for trans in $(intersection "${c_glib_transports}" "${ruby_transports}"); do
-    for sock in $(intersection "${c_glib_sockets}" "${ruby_sockets}"); do
-      case "$sock" in
-        "ip" ) extraparam="";;
-        "ip-ssl" ) extraparam="--ssl";;
-      esac
-      do_test "c_glib-ruby" "${proto}" "${trans}-${sock}" \
-              "c_glib/test_client --protocol=${proto}  --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "ruby rb/integration/TestServer.rb --protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "2" "2"
-    done
-  done
-done
-
-for trans in $(intersection "${c_glib_transports}" "${ruby_transports}"); do
-    for sock in $(intersection "${c_glib_sockets}" "${ruby_sockets}"); do
-      case "$sock" in
-        "ip" ) extraparam="";;
-        "ip-ssl" ) extraparam="--ssl";;
-      esac
-      do_test "c_glib-ruby" "binary-accel" "${trans}-${sock}" \
-              "c_glib/test_client --protocol=binary --transport=${trans} --port=${THRIFT_TEST_PORT} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "ruby rb/integration/TestServer.rb --protocol=accel --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "5" "5"
-    done
-  done
-
-######### ruby client - nodejs server ##############
-for type in ${nodejs_types}; do
-  for proto in $(intersection "${ruby_protocols}" "${nodejs_protocols}"); do
-    for trans in $(intersection "${ruby_transports}" "${nodejs_transports}"); do
-      for sock in $(intersection "${ruby_sockets}" "${nodejs_sockets}"); do
-        case "$sock" in
-          "ip" ) extraparam="";;
-          "ip-ssl" ) extraparam="--ssl";;
-        esac
-        do_test "ruby-nodejs" "${proto}" "${trans}-${sock}" \
-                "ruby rb/integration/TestClient.rb --protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-                "node ${NODE_TEST_DIR}/server.js --type ${type} -p ${proto} -t ${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-                "5" "2"
-      done
-    done
-  done
-done
-
-for type in ${nodejs_types}; do
-  for trans in $(intersection "${ruby_transports}" "${nodejs_transports}"); do
-    for sock in $(intersection "${ruby_sockets}" "${nodejs_sockets}"); do
-      case "$sock" in
-        "ip" ) extraparam="";;
-        "ip-ssl" ) extraparam="--ssl";;
-      esac
-      do_test "ruby-nodejs" "${proto}" "${trans}-${sock}" \
-              "ruby rb/integration/TestClient.rb --protocol=accel --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "node ${NODE_TEST_DIR}/server.js --type ${type} -p binary -t ${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "5" "2"
-    done
-  done
-done
-
-######### nodejs client - ruby server ##############
-for type in ${nodejs_types}; do
-  for proto in $(intersection "${ruby_protocols}" "${nodejs_protocols}"); do
-    for trans in $(intersection "${ruby_transports}" "${nodejs_transports}"); do
-      for sock in $(intersection "${ruby_sockets}" "${nodejs_sockets}"); do
-        case "$sock" in
-          "ip" ) extraparam="";;
-          "ip-ssl" ) extraparam="--ssl";;
-        esac
-        do_test "nodejs-ruby" "${proto}" "${trans}-${sock}" \
-                "node ${NODE_TEST_DIR}/client.js --type ${type} -p ${proto} -t ${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-                "ruby rb/integration/TestServer.rb --protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-                "10" "5"
-      done
-    done
-  done
-done
-
-for type in ${nodejs_types}; do
-  for trans in $(intersection "${ruby_transports}" "${nodejs_transports}"); do
-    for sock in $(intersection "${ruby_sockets}" "${nodejs_sockets}"); do
-      case "$sock" in
-        "ip" ) extraparam="";;
-        "ip-ssl" ) extraparam="--ssl";;
-      esac
-      do_test "nodejs-ruby" "binary-accel" "${trans}-${sock}" \
-              "node ${NODE_TEST_DIR}/client.js --type ${type} -p binary -t ${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "ruby rb/integration/TestServer.rb --protocol=accel --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "10" "2"
-    done
-  done
-done
-
-######### py client - ruby server ##############
-for proto in $(intersection "${py_protocols}" "${ruby_protocols}"); do
-  for trans in $(intersection "${py_transports}" "${ruby_transports}"); do
-    for sock in $(intersection "${py_sockets}" "${ruby_sockets}"); do
-      case "$sock" in
-        "ip" ) extraparam="";;
-        "ip-ssl" ) extraparam="--ssl";;
-      esac
-      do_test "py-ruby" "${proto}" "${trans}-${sock}" \
-              "py/TestClient.py --protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} --host=localhost --genpydir=gen-py ${extraparam}" \
-              "ruby rb/integration/TestServer.rb --protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "15" "5"
-    done
-  done
-done
-
-for trans in $(intersection "${py_transports}" "${ruby_transports}"); do
-    for sock in $(intersection "${py_sockets}" "${ruby_sockets}"); do
-      case "$sock" in
-        "ip" ) extraparam="";;
-        "ip-ssl" ) extraparam="--ssl";;
-      esac
-      do_test "py-ruby" "${proto}" "${trans}-${sock}" \
-              "py/TestClient.py --protocol=accel --transport=${trans} --port=${THRIFT_TEST_PORT} --host=localhost --genpydir=gen-py ${extraparam}" \
-              "ruby rb/integration/TestServer.rb --protocol=binary --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "15" "5"
-      do_test "py-ruby" "${proto}" "${trans}-${sock}" \
-              "py/TestClient.py --protocol=binary --transport=${trans} --port=${THRIFT_TEST_PORT} --host=localhost --genpydir=gen-py ${extraparam}" \
-              "ruby rb/integration/TestServer.rb --protocol=accel --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "15" "5"
-    done
-  done
-
-######### ruby client - py server ##############
-for proto in $(intersection "${py_protocols}" "${ruby_protocols}"); do
-  for trans in $(intersection "${py_transports}" "${ruby_transports}"); do
-    for sock in $(intersection "${py_sockets}" "${ruby_sockets}"); do
-      case "$sock" in
-        "ip" ) extraparam="";;
-        "ip-ssl" ) extraparam="--ssl";;
-      esac
-      do_test "ruby-py" "${proto}" "${trans}-${sock}" \
-              "ruby rb/integration/TestClient.rb --protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "py/TestServer.py --protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} --genpydir=gen-py TSimpleServer ${extraparam}" \
-              "5" "2"
-    done
-  done
-done
-
-for trans in $(intersection "${py_transports}" "${ruby_transports}"); do
-    for sock in $(intersection "${py_sockets}" "${ruby_sockets}"); do
-      case "$sock" in
-        "ip" ) extraparam="";;
-        "ip-ssl" ) extraparam="--ssl";;
-      esac
-      do_test "ruby-py" "binary-accel" "${trans}-${sock}" \
-              "ruby rb/integration/TestClient.rb --protocol=binary --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "py/TestServer.py --protocol=accel --transport=${trans} --port=${THRIFT_TEST_PORT} --genpydir=gen-py TSimpleServer ${extraparam}" \
-              "5" "2"
-      do_test "ruby-py" "accel-binary" "${trans}-${sock}" \
-              "ruby rb/integration/TestClient.rb --protocol=accel --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "py/TestServer.py --protocol=binary --transport=${trans} --port=${THRIFT_TEST_PORT} --genpydir=gen-py TSimpleServer ${extraparam}" \
-              "5" "2"
-    done
-  done
-
-######### hs client - hs server ###############
-for proto in $hs_protocols; do
-  for trans in $hs_transports; do
-    for sock in $hs_sockets; do
-      case "$sock" in
-       "ip" )     extraparam="";;
-       "ip-ssl" ) extraparam="--ssl";;
-       "domain" ) extraparam="--domain-socket=/tmp/ThriftTest.thrift";;
-      esac
-      do_test "hs-hs"   "${proto}" "${trans}-${sock}" \
-              "hs/TestClient --protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "hs/TestServer --protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "2" "0.1"
-    done
-  done
-done
-
-######### hs client - cpp server ###############
-for proto in $(intersection "${hs_protocols}" "${cpp_protocols}"); do
-  for trans in  $(intersection "${hs_transports}" "${cpp_transports}"); do
-    for sock in $(intersection "${hs_sockets}" "${cpp_sockets}"); do
-      case "$sock" in
-       "ip" )     extraparam="";;
-       "ip-ssl" ) extraparam="--ssl";;
-       "domain" ) extraparam="--domain-socket=/tmp/ThriftTest.thrift";;
-      esac
-      do_test "hs-cpp"   "${proto}" "${trans}-${sock}" \
-              "hs/TestClient --protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "cpp/TestServer --protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "2" "0.1"
-    done
-  done
-done
-
-######### cpp client - hs server ###############
-for proto in $(intersection "${hs_protocols}" "${cpp_protocols}"); do
-  for trans in  $(intersection "${hs_transports}" "${cpp_transports}"); do
-    for sock in $(intersection "${hs_sockets}" "${cpp_sockets}"); do
-      case "$sock" in
-       "ip" )     extraparam="";;
-       "ip-ssl" ) extraparam="--ssl";;
-       "domain" ) extraparam="--domain-socket=/tmp/ThriftTest.thrift";;
-      esac
-      do_test "cpp-hs"   "${proto}" "${trans}-${sock}" \
-              "cpp/TestClient --protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "hs/TestServer --protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "2" "0.1"
-    done
-  done
-done
-
-######### hs client - java server ###############
-for proto in $(intersection "${hs_protocols}" "${java_protocols}"); do
-  for trans in  $(intersection "${hs_transports}" "${java_transports}"); do
-    for sock in $(intersection "${hs_sockets}" "${java_sockets}"); do
-      case "$sock" in
-       "ip" )     extraparam="";;
-       "ip-ssl" ) extraparam="--ssl";;
-       "domain" ) extraparam="--domain-socket=/tmp/ThriftTest.thrift";;
-      esac
-      do_test "hs-java" "${proto}" "${trans}-${sock}" \
-              "hs/TestClient --protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-        "ant -f  ../lib/java/build.xml -Dno-gen-thrift=\"\" -Dtestargs \"--protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}\" run-testserver" \
-              "5" "1"
-    done
-  done
-done
-
-######### java client - hs server ###############
-for proto in $(intersection "${hs_protocols}" "${java_protocols}"); do
-  for trans in  $(intersection "${hs_transports}" "${java_transports}"); do
-    for sock in $(intersection "${hs_sockets}" "${java_sockets}"); do
-      case "$sock" in
-       "ip" )     extraparam="";;
-       "ip-ssl" ) extraparam="--ssl";;
-       "domain" ) extraparam="--domain-socket=/tmp/ThriftTest.thrift";;
-      esac
-      do_test "java-hs" "${proto}" "${trans}-${sock}" \
-              "ant -f  ../lib/java/build.xml -Dno-gen-thrift=\"\" -Dtestargs \"--protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} --port=${THRIFT_TEST_PORT} ${extraparam}\" run-testclient" \
-              "hs/TestServer --protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "5" "1"
-    done
-  done
-done
-
-######### hs client - c_glib server ###############
-for proto in $(intersection "${hs_protocols}" "${c_glib_protocols}"); do
-  for trans in  $(intersection "${hs_transports}" "${c_glib_transports}"); do
-    for sock in $(intersection "${hs_sockets}" "${c_glib_sockets}"); do
-      case "$sock" in
-       "ip" )     extraparam="";;
-       "ip-ssl" ) extraparam="--ssl";;
-       "domain" ) extraparam="--domain-socket=/tmp/ThriftTest.thrift";;
-      esac
-      do_test "hs-c_glib"   "${proto}" "${trans}-${sock}" \
-              "hs/TestClient --protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "c_glib/test_server --protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "2" "0.1"
-    done
-  done
-done
-
-######### c_glib client - hs server ###############
-for proto in $(intersection "${c_glib_protocols}" "${hs_protocols}"); do
-  for trans in  $(intersection "${c_glib_transports}" "${hs_transports}"); do
-    for sock in $(intersection "${c_glib_sockets}" "${hs_sockets}"); do
-      case "$sock" in
-       "ip" )     extraparam="";;
-       "ip-ssl" ) extraparam="--ssl";;
-       "domain" ) extraparam="--domain-socket=/tmp/ThriftTest.thrift";;
-      esac
-      do_test "c_glib-hs"   "${proto}" "${trans}-${sock}" \
-              "c_glib/test_client --protocol=${proto}  --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "hs/TestServer --protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "2" "0.1"
-    done
-  done
-done
-
-######### py client -hs server ##############
-for proto in $(intersection "${hs_protocols}" "${py_protocols}"); do
-  for trans in $(intersection "${hs_transports}" "${py_transports}"); do
-    for sock in $(intersection "${hs_sockets}" "${py_sockets}"); do
-      case "$sock" in
-        "ip" ) extraparam="";;
-        "ip-ssl" ) extraparam="--ssl";;
-      esac
-      do_test "py-hs" "${proto}" "${trans}-${sock}" \
-              "py/TestClient.py --protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} --host=localhost --genpydir=gen-py ${extraparam}" \
-              "hs/TestServer --protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "10" "2"
-    done
-  done
-done
-
-for trans in $(intersection "${hs_transports}" "${py_transports}"); do
-    for sock in $(intersection "${hs_sockets}" "${py_sockets}"); do
-      case "$sock" in
-        "ip" ) extraparam="";;
-        "ip-ssl" ) extraparam="--ssl";;
-      esac
-      do_test "py-hs" "accel-binary" "${trans}-${sock}" \
-              "py/TestClient.py --protocol=accel --transport=${trans} --port=${THRIFT_TEST_PORT} --host=localhost --genpydir=gen-py ${extraparam}" \
-              "hs/TestServer --protocol=binary --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "10" "2"
-    done
-  done
-
-######### hs client - py server ##############
-for proto in $(intersection "${hs_protocols}" "${py_protocols}"); do
-  for trans in $(intersection "${hs_transports}" "${py_transports}"); do
-    for sock in $(intersection "${hs_sockets}" "${py_sockets}"); do
-      case "$sock" in
-        "ip" ) extraparam="";;
-        "ip-ssl" ) extraparam="--ssl";;
-      esac
-      do_test "hs-py" "${proto}" "${trans}-${sock}" \
-              "hs/TestClient --protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "py/TestServer.py --protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} --genpydir=gen-py TSimpleServer ${extraparam}" \
-              "10" "2"
-    done
-  done
-done
-
-for trans in $(intersection "${hs_transports}" "${py_transports}"); do
-    for sock in $(intersection "${hs_sockets}" "${py_sockets}"); do
-      case "$sock" in
-        "ip" ) extraparam="";;
-        "ip-ssl" ) extraparam="--ssl";;
-      esac
-      do_test "hs-py" "binary-accel" "${trans}-${sock}" \
-              "hs/TestClient --protocol=binary --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "py/TestServer.py --protocol=accel --transport=${trans} --port=${THRIFT_TEST_PORT} --genpydir=gen-py TSimpleServer ${extraparam}" \
-              "10" "2"
-    done
-  done
-
-######### nodejs client - hs server ##############
-for type in ${nodejs_types}; do
-  for proto in $(intersection "${nodejs_protocols}" "${hs_protocols}"); do
-    for trans in $(intersection "${nodejs_transports}" "${hs_transports}"); do
-      for sock in $(intersection "${nodejs_sockets}" "${hs_sockets}"); do
-        case "$sock" in
-          "ip" ) extraparam="";;
-          "ip-ssl" ) extraparam="--ssl";;
-        esac
-        do_test "nodejs-hs" "${proto}" "${trans}-${sock}" \
-                "node ${NODE_TEST_DIR}/client.js --type ${type} -p ${proto} -t ${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-                "hs/TestServer --protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-                "5" "0.2"
-      done
-    done
-  done
-done
-
-######### hs client - nodejs server ##############
-for type in ${nodejs_types}; do
-  for proto in $(intersection "${nodejs_protocols}" "${hs_protocols}"); do
-    for trans in $(intersection "${nodejs_transports}" "${hs_transports}"); do
-      for sock in $(intersection "${nodejs_sockets}" "${hs_sockets}"); do
-        case "$sock" in
-          "ip" ) extraparam="";;
-          "ip-ssl" ) extraparam="--ssl";;
-        esac
-        do_test "hs-nodejs" "${proto}" "${trans}-${sock}" \
-                "hs/TestClient --protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-                "node ${NODE_TEST_DIR}/server.js --type ${type} -p ${proto} -t ${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-                "5" "2"
-      done
-    done
-  done
-done
-
-######### ruby client - hs server ##############
-for proto in $(intersection "${hs_protocols}" "${ruby_protocols}"); do
-  for trans in $(intersection "${hs_transports}" "${ruby_transports}"); do
-    for sock in $(intersection "${hs_sockets}" "${ruby_sockets}"); do
-      case "$sock" in
-        "ip" ) extraparam="";;
-        "ip-ssl" ) extraparam="--ssl";;
-      esac
-      do_test "ruby-hs" "${proto}" "${trans}-${sock}" \
-              "ruby rb/integration/TestClient.rb --protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "hs/TestServer --protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "5" "5"
-    done
-  done
-done
-
-for trans in $(intersection "${hs_transports}" "${ruby_transports}"); do
-    for sock in $(intersection "${hs_sockets}" "${ruby_sockets}"); do
-      case "$sock" in
-        "ip" ) extraparam="";;
-        "ip-ssl" ) extraparam="--ssl";;
-      esac
-      do_test "ruby-cpp" "accel-binary" "${trans}-${sock}" \
-              "ruby rb/integration/TestClient.rb --protocol=accel --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam} ${extraparam}" \
-              "hs/TestServer --protocol=binary --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "5" "5"
-    done
-  done
-
-######### hs client - ruby server ##############
-for proto in $(intersection "${hs_protocols}" "${ruby_protocols}"); do
-  for trans in $(intersection "${hs_transports}" "${ruby_transports}"); do
-    for sock in $(intersection "${hs_sockets}" "${ruby_sockets}"); do
-      case "$sock" in
-        "ip" ) extraparam="";;
-        "ip-ssl" ) extraparam="--ssl";;
-      esac
-      do_test "hs-ruby" "${proto}" "${trans}-${sock}" \
-              "hs/TestClient --protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "ruby rb/integration/TestServer.rb --protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "5" "5"
-    done
-  done
-done
-
-for trans in $(intersection "${hs_transports}" "${ruby_transports}"); do
-    for sock in $(intersection "${hs_sockets}" "${ruby_sockets}"); do
-      case "$sock" in
-        "ip" ) extraparam="";;
-        "ip-ssl" ) extraparam="--ssl";;
-      esac
-      do_test "hs-ruby" "binary-accel" "${trans}-${sock}" \
-              "hs/TestClient --protocol=binary --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "ruby rb/integration/TestServer.rb --protocol=accel --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "5" "5"
-    done
-  done
-
-
-# delete Unix Domain Socket used by cpp tests
-rm -f /tmp/ThriftTest.thrift
-
-######### csharp client - csharp server #############
-export MONO_PATH=../lib/csharp
-for proto in $csharp_protocols; do
-  for trans in $csharp_transports; do
-    for sock in $csharp_sockets; do
-      case "$sock" in
-        "ip" ) extraparam="";;
-        "ip-ssl" ) extraparam="--ssl";;
-      esac
-      do_test "csharp-csharp"   "${proto}" "${trans}-${sock}" \
-              "../lib/csharp/test/ThriftTest/TestClientServer.exe client --protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "../lib/csharp/test/ThriftTest/TestClientServer.exe server --protocol=${proto} --transport=${trans} --port=${THRIFT_TEST_PORT} ${extraparam}" \
-              "5" "1"
-    done
-  done
-done
-
-do_test "js-java"   "json"  "http-ip" \
-        "" \
-        "ant -f  ../lib/js/test/build.xml unittest" \
-        "2" "2"
-do_test "perl-cpp"  "binary" "buffered-ip" \
-        "perl -I perl/gen-perl/ -I../lib/perl/lib/ perl/TestClient.pl" \
-        "cpp/TestServer  --port=${THRIFT_TEST_PORT}" \
-        "10" "2"
-do_test "php-cpp"  "binary" "buffered-ip" \
-        "make -C php/ client" \
-        "cpp/TestServer --port=${THRIFT_TEST_PORT}" \
-        "10" "2"
-
-echo " failed tests are logged to test/log/error.log"
-echo " full log is here test/log/client_server_protocol_transport_client.log"
-echo " full log is here test/log/client_server_protocol_transport_server.log"
-echo " or look at file://$BASEDIR/$STATUS_HTML"
-
-ELAPSED_TIME=$(echo "(${SECONDS} - ${START_TIME})" | bc)
-DURATION="${ELAPSED_TIME} seconds"
-
-echo $FAILED failed of $TESTCOUNT tests in total
-echo "test an took" $DURATION
-print_html_footer "$DURATION"
-
-date
-cd -
