You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@thrift.apache.org by ro...@apache.org on 2015/03/29 14:40:01 UTC

[1/2] thrift git commit: THRIFT-2578 Moving 'make cross' from test.sh to test.py

Repository: thrift
Updated Branches:
  refs/heads/master cada37008 -> f5b795d3b


THRIFT-2578 Moving 'make cross' from test.sh to test.py


Project: http://git-wip-us.apache.org/repos/asf/thrift/repo
Commit: http://git-wip-us.apache.org/repos/asf/thrift/commit/f5b795d3
Tree: http://git-wip-us.apache.org/repos/asf/thrift/tree/f5b795d3
Diff: http://git-wip-us.apache.org/repos/asf/thrift/diff/f5b795d3

Branch: refs/heads/master
Commit: f5b795d3be6acc0da30afc4b4aa77e531125eec6
Parents: 58ed1cd
Author: Nobuaki Sukegawa <ns...@gmail.com>
Authored: Sun Mar 29 14:48:48 2015 +0900
Committer: Roger Meier <ro...@apache.org>
Committed: Sun Mar 29 14:39:32 2015 +0200

----------------------------------------------------------------------
 .gitignore                  |    1 -
 .travis.yml                 |    7 +-
 Makefile.am                 |    7 +-
 test/Makefile.am            |    1 -
 test/README.md              |  136 +++-
 test/crossrunner/collect.py |    8 +-
 test/crossrunner/report.py  |   12 +-
 test/test.sh                | 1436 --------------------------------------
 8 files changed, 139 insertions(+), 1469 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/thrift/blob/f5b795d3/.gitignore
----------------------------------------------------------------------
diff --git a/.gitignore b/.gitignore
index a3062d8..70e05f0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -219,7 +219,6 @@ test-driver
 /missing
 /node_modules/
 /stamp-h1
-/test/status.html
 /test/results.json
 /test/c_glib/test_client
 /test/c_glib/test_server

http://git-wip-us.apache.org/repos/asf/thrift/blob/f5b795d3/.travis.yml
----------------------------------------------------------------------
diff --git a/.travis.yml b/.travis.yml
index bb45961..e5b8e02 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -56,15 +56,10 @@ env:
   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)"

http://git-wip-us.apache.org/repos/asf/thrift/blob/f5b795d3/Makefile.am
----------------------------------------------------------------------
diff --git a/Makefile.am b/Makefile.am
index bbe6f80..65dfe9d 100755
--- a/Makefile.am
+++ b/Makefile.am
@@ -37,16 +37,13 @@ dist-hook:
 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 = \

http://git-wip-us.apache.org/repos/asf/thrift/blob/f5b795d3/test/Makefile.am
----------------------------------------------------------------------
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 @@ check-local:
 
 EXTRA_DIST = \
 	keys \
-	test.sh \
 	test.py \
 	tests.json \
 	c_glib \

http://git-wip-us.apache.org/repos/asf/thrift/blob/f5b795d3/test/README.md
----------------------------------------------------------------------
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 @@ line interface for servers:
       --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 @@ and this for clients:
       --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 @@ failing tests:
       #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)
-

http://git-wip-us.apache.org/repos/asf/thrift/blob/f5b795d3/test/crossrunner/collect.py
----------------------------------------------------------------------
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 @@ from crossrunner.util import merge_dict
 # 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 @@ def do_collect_tests(servers, clients):
       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):

http://git-wip-us.apache.org/repos/asf/thrift/blob/f5b795d3/test/crossrunner/report.py
----------------------------------------------------------------------
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 @@ def generate_known_failures(testdir, overwrite, save, out):
     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 @@ class SummaryReporter(TestReporter):
         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 @@ class SummaryReporter(TestReporter):
     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',

http://git-wip-us.apache.org/repos/asf/thrift/blob/f5b795d3/test/test.sh
----------------------------------------------------------------------
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 -


[2/2] thrift git commit: THRIFT-3057 Java compiler build is broken

Posted by ro...@apache.org.
THRIFT-3057 Java compiler build is broken


Project: http://git-wip-us.apache.org/repos/asf/thrift/repo
Commit: http://git-wip-us.apache.org/repos/asf/thrift/commit/58ed1cdf
Tree: http://git-wip-us.apache.org/repos/asf/thrift/tree/58ed1cdf
Diff: http://git-wip-us.apache.org/repos/asf/thrift/diff/58ed1cdf

Branch: refs/heads/master
Commit: 58ed1cdf3cd4da9d013e4cd4b92b3f4e440d145d
Parents: cada370
Author: Nobuaki Sukegawa <ns...@gmail.com>
Authored: Sun Mar 29 19:44:41 2015 +0900
Committer: Roger Meier <ro...@apache.org>
Committed: Sun Mar 29 14:39:32 2015 +0200

----------------------------------------------------------------------
 compiler/cpp/src/generate/t_java_generator.cc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/thrift/blob/58ed1cdf/compiler/cpp/src/generate/t_java_generator.cc
----------------------------------------------------------------------
diff --git a/compiler/cpp/src/generate/t_java_generator.cc b/compiler/cpp/src/generate/t_java_generator.cc
index e8c70ad..9ca1567 100644
--- a/compiler/cpp/src/generate/t_java_generator.cc
+++ b/compiler/cpp/src/generate/t_java_generator.cc
@@ -2133,7 +2133,7 @@ void t_java_generator::generate_java_bean_boilerplate(ofstream& out, t_struct* t
     t_type* type = get_true_type(field->get_type());
     std::string field_name = field->get_name();
     std::string cap_name = get_cap_name(field_name);
-    bool optional = use_option_type_ && field->get_req() == t_field::e_req::T_OPTIONAL;
+    bool optional = use_option_type_ && field->get_req() == t_field::T_OPTIONAL;
 
     if (type->is_container()) {
       // Method to return the size of the collection