| [ | 
 |   { | 
 |     "name": "c_glib", | 
 |     "platforms": [ | 
 |       "Linux" | 
 |     ], | 
 |     "server": { | 
 |       "command": [ | 
 |         "test_server", | 
 |         "--lt-debug" | 
 |       ], | 
 |       "protocols": [ | 
 |         "binary:multi", | 
 |         "compact:multic" | 
 |       ] | 
 |     }, | 
 |     "client": { | 
 |       "command": [ | 
 |         "test_client", | 
 |         "--lt-debug" | 
 |       ], | 
 |       "protocols": [ | 
 |         "multi:binary", | 
 |         "multic:compact" | 
 |       ], | 
 |       "sockets": [ | 
 |         "ip-ssl" | 
 |       ] | 
 |     }, | 
 |     "transports": [ | 
 |       "buffered", | 
 |       "framed" | 
 |     ], | 
 |     "sockets": [ | 
 |       "ip", | 
 |       "domain" | 
 |     ], | 
 |     "protocols": [ | 
 |       "binary", | 
 |       "compact", | 
 |       "multi", | 
 |       "multic" | 
 |     ], | 
 |     "workdir": "c_glib" | 
 |   }, | 
 |   { | 
 |     "name": "cl", | 
 |     "server": { | 
 |       "command": ["TestServer"], | 
 |       "workdir": "cl", | 
 |       "protocols": ["binary", "multi"], | 
 |       "transports": ["buffered", "framed"], | 
 |       "sockets": ["ip"] | 
 |     }, | 
 |     "client": { | 
 |       "command": ["TestClient"], | 
 |       "workdir": "cl", | 
 |       "protocols": ["binary", "multi"], | 
 |       "transports": ["buffered", "framed"], | 
 |       "sockets": ["ip"] | 
 |     } | 
 |   }, | 
 |   { | 
 |     "name": "d", | 
 |     "server": { | 
 |       "command": [ | 
 |         "thrift_test_server", | 
 |         "--trace" | 
 |       ] | 
 |     }, | 
 |     "client": { | 
 |       "command": [ | 
 |         "thrift_test_client" | 
 |       ] | 
 |     }, | 
 |     "transports": [ | 
 |       "http", | 
 |       "buffered", | 
 |       "framed", | 
 |       "zlib" | 
 |     ], | 
 |     "sockets": [ | 
 |       "ip", | 
 |       "ip-ssl" | 
 |     ], | 
 |     "protocols": [ | 
 |       "binary", | 
 |       "compact", | 
 |       "json" | 
 |     ], | 
 |     "workdir": "../lib/d/test" | 
 |   }, | 
 |   { | 
 |     "name": "go", | 
 |     "server": { | 
 |       "command": [ | 
 |         "testserver", | 
 |         "--certPath=../../keys" | 
 |       ] | 
 |     }, | 
 |     "client": { | 
 |       "timeout": 6, | 
 |       "command": [ | 
 |         "testclient" | 
 |       ] | 
 |     }, | 
 |     "transports": [ | 
 |       "buffered", | 
 |       "framed", | 
 |       "http", | 
 |       "zlib" | 
 |     ], | 
 |     "sockets": [ | 
 |       "ip", | 
 |       "ip-ssl" | 
 |     ], | 
 |     "protocols": [ | 
 |       "binary", | 
 |       "compact", | 
 |       "json", | 
 |       "header" | 
 |     ], | 
 |     "workdir": "go/bin" | 
 |   }, | 
 |   { | 
 |     "name": "java", | 
 |     "join_args": false, | 
 |     "server": { | 
 |       "delay": 15, | 
 |       "command": [ | 
 |         "build/runserver" | 
 |       ], | 
 |       "protocols": [ | 
 |         "binary:multi", | 
 |         "compact:multic", | 
 |         "json:multij" | 
 |       ] | 
 |     }, | 
 |     "client": { | 
 |       "timeout": 13, | 
 |       "command": [ | 
 |         "build/runclient" | 
 |       ], | 
 |       "transports": [ | 
 |         "http" | 
 |       ], | 
 |       "protocols": [ | 
 |         "multi:binary", | 
 |         "multic:compact", | 
 |         "multij:json" | 
 |       ] | 
 |     }, | 
 |     "transports": [ | 
 |       "buffered", | 
 |       "framed", | 
 |       "framed:fastframed", | 
 |       "zlib" | 
 |     ], | 
 |     "sockets": [ | 
 |       "ip", | 
 |       "ip-ssl" | 
 |     ], | 
 |     "protocols": [ | 
 |       "binary", | 
 |       "compact", | 
 |       "json", | 
 |       "multi", | 
 |       "multic", | 
 |       "multij" | 
 |     ], | 
 |     "workdir": "../lib/java" | 
 |   }, | 
 |   { | 
 |     "name": "kotlin", | 
 |     "join_args": false, | 
 |     "server": { | 
 |       "delay": 15, | 
 |       "command": [ | 
 |         "cross-test-server/build/install/TestServer/bin/TestServer" | 
 |       ], | 
 |       "protocols": [ | 
 |         "binary" | 
 |       ] | 
 |     }, | 
 |     "client": { | 
 |       "timeout": 13, | 
 |       "command": [ | 
 |         "cross-test-client/build/install/TestClient/bin/TestClient" | 
 |       ], | 
 |       "transports": [ | 
 |         "framed" | 
 |       ], | 
 |       "protocols": [ | 
 |         "binary" | 
 |       ] | 
 |     }, | 
 |     "transports": [ | 
 |       "framed" | 
 |     ], | 
 |     "sockets": [ | 
 |       "ip" | 
 |     ], | 
 |     "protocols": [ | 
 |       "binary", | 
 |       "compact", | 
 |       "json" | 
 |     ], | 
 |     "workdir": "../lib/kotlin" | 
 |   }, | 
 |   { | 
 |     "name": "nodejs", | 
 |     "env": { | 
 |       "NODE_PATH": "../lib" | 
 |     }, | 
 |     "server": { | 
 |       "command": [ | 
 |         "node", | 
 |         "server.js", | 
 |         "--type=tcp" | 
 |       ] | 
 |     }, | 
 |     "client": { | 
 |       "timeout": 6, | 
 |       "command": [ | 
 |         "node", | 
 |         "client.js", | 
 |         "--type=tcp" | 
 |       ] | 
 |     }, | 
 |     "transports": [ | 
 |       "buffered", | 
 |       "framed", | 
 |       "http", | 
 |       "websocket" | 
 |     ], | 
 |     "sockets": [ | 
 |       "ip", | 
 |       "ip-ssl", | 
 |       "domain" | 
 |     ], | 
 |     "protocols": [ | 
 |       "compact", | 
 |       "binary", | 
 |       "json", | 
 |       "header" | 
 |     ], | 
 |     "workdir": "../lib/nodejs/test" | 
 |   }, | 
 |   { | 
 |     "name": "hs", | 
 |     "server": { | 
 |       "command": [ | 
 |         "TestServer" | 
 |       ] | 
 |     }, | 
 |     "client": { | 
 |       "timeout": 6, | 
 |       "transports": [ | 
 |         "http" | 
 |       ], | 
 |       "command": [ | 
 |         "TestClient" | 
 |       ] | 
 |     }, | 
 |     "transports": [ | 
 |       "buffered", | 
 |       "framed" | 
 |     ], | 
 |     "sockets": [ | 
 |       "ip" | 
 |     ], | 
 |     "protocols": [ | 
 |       "header", | 
 |       "compact", | 
 |       "binary", | 
 |       "json" | 
 |     ], | 
 |     "workdir": "hs" | 
 |   }, | 
 |   { | 
 |     "name": "py", | 
 |     "server": { | 
 |       "extra_args": ["TSimpleServer"], | 
 |       "command": [ | 
 |         "TestServer.py", | 
 |         "--verbose", | 
 |         "--genpydir=gen-py" | 
 |       ] | 
 |     }, | 
 |     "client": { | 
 |       "timeout": 10, | 
 |       "command": [ | 
 |         "TestClient.py", | 
 |         "--verbose", | 
 |         "--host=localhost", | 
 |         "--genpydir=gen-py" | 
 |       ] | 
 |     }, | 
 |     "transports": [ | 
 |       "buffered", | 
 |       "framed", | 
 |       "http", | 
 |       "zlib" | 
 |     ], | 
 |     "sockets": [ | 
 |       "ip", | 
 |       "ip-ssl", | 
 |       "domain" | 
 |     ], | 
 |     "protocols": [ | 
 |       "binary", | 
 |       "binary:accel", | 
 |       "compact", | 
 |       "compact:accelc", | 
 |       "header", | 
 |       "json", | 
 |       "multi", | 
 |       "multi:multia", | 
 |       "multia", | 
 |       "multiac", | 
 |       "multic", | 
 |       "multic:multiac", | 
 |       "multih", | 
 |       "multij" | 
 |     ], | 
 |     "workdir": "py" | 
 |   }, | 
 |   { | 
 |     "comment": "Using 'python3' executable to test py2 and 3 at once", | 
 |     "name": "py3", | 
 |     "server": { | 
 |       "extra_args": ["TSimpleServer"], | 
 |       "command": [ | 
 |         "python3", | 
 |         "TestServer.py", | 
 |         "--verbose", | 
 |         "--genpydir=gen-py" | 
 |       ] | 
 |     }, | 
 |     "client": { | 
 |       "timeout": 10, | 
 |       "command": [ | 
 |         "python3", | 
 |         "TestClient.py", | 
 |         "--host=localhost", | 
 |         "--genpydir=gen-py" | 
 |       ] | 
 |     }, | 
 |     "transports": [ | 
 |       "buffered", | 
 |       "framed", | 
 |       "http", | 
 |       "zlib" | 
 |     ], | 
 |     "sockets": [ | 
 |       "ip", | 
 |       "ip-ssl", | 
 |       "domain" | 
 |     ], | 
 |     "protocols": [ | 
 |       "binary", | 
 |       "binary:accel", | 
 |       "compact", | 
 |       "compact:accelc", | 
 |       "header", | 
 |       "json", | 
 |       "multi", | 
 |       "multi:multia", | 
 |       "multia", | 
 |       "multiac", | 
 |       "multic", | 
 |       "multic:multiac", | 
 |       "multih", | 
 |       "multij" | 
 |     ], | 
 |     "workdir": "py" | 
 |   }, | 
 |   { | 
 |     "name": "cpp", | 
 |     "server": { | 
 |       "command": [ | 
 |         "TestServer" | 
 |       ], | 
 |       "protocols": [ | 
 |         "binary:multi", | 
 |         "compact:multic", | 
 |         "header:multih", | 
 |         "json:multij" | 
 |       ] | 
 |     }, | 
 |     "client": { | 
 |       "timeout": 8, | 
 |       "command": [ | 
 |         "TestClient" | 
 |       ], | 
 |       "protocols": [ | 
 |         "multi:binary", | 
 |         "multic:compact", | 
 |         "multih:header", | 
 |         "multij:json" | 
 |       ] | 
 |     }, | 
 |     "transports": [ | 
 |       "buffered", | 
 |       "http", | 
 |       "framed", | 
 |       "zlib", | 
 |       "websocket" | 
 |     ], | 
 |     "sockets": [ | 
 |       "ip", | 
 |       "ip-ssl", | 
 |       "domain" | 
 |     ], | 
 |     "protocols": [ | 
 |       "compact", | 
 |       "binary", | 
 |       "json", | 
 |       "header", | 
 |       "multi", | 
 |       "multic", | 
 |       "multih", | 
 |       "multij" | 
 |     ], | 
 |     "workdir": "cpp" | 
 |   }, | 
 |   { | 
 |     "name": "rb", | 
 |     "server": { | 
 |       "command": [ | 
 |         "ruby", | 
 |         "../integration/TestServer.rb" | 
 |       ] | 
 |     }, | 
 |     "client": { | 
 |       "timeout": 10, | 
 |       "command": [ | 
 |         "ruby", | 
 |         "../integration/TestClient.rb", | 
 |         "--" | 
 |       ] | 
 |     }, | 
 |     "transports": [ | 
 |       "buffered", | 
 |       "framed" | 
 |     ], | 
 |     "sockets": [ | 
 |       "domain", | 
 |       "ip", | 
 |       "ip-ssl" | 
 |     ], | 
 |     "protocols": [ | 
 |       "binary", | 
 |       "binary:accel", | 
 |       "compact", | 
 |       "json" | 
 |     ], | 
 |     "workdir": "rb/gen-rb" | 
 |   }, | 
 |   { | 
 |     "name": "netstd", | 
 |     "transports": [ | 
 |       "buffered", | 
 |       "framed" | 
 |     ], | 
 |     "sockets": [ | 
 |       "ip", | 
 |       "ip-ssl" | 
 |     ], | 
 |     "protocols": [ | 
 |       "binary", | 
 |       "compact", | 
 |       "json" | 
 |     ], | 
 |     "server": { | 
 |       "command": [ | 
 |         "dotnet", | 
 |         "run", | 
 |         "--no-build", | 
 |         "--project=Server/Server.csproj", | 
 |         "server" | 
 |       ] | 
 |     }, | 
 |     "client": { | 
 |       "timeout": 10, | 
 |       "command": [ | 
 |         "dotnet", | 
 |         "run", | 
 |         "--no-build", | 
 |         "--project=Client/Client.csproj", | 
 |         "client" | 
 |       ] | 
 |     }, | 
 |         "workdir": "netstd" | 
 |   }, | 
 |   { | 
 |     "name": "perl", | 
 |     "transports": [ | 
 |       "buffered", | 
 |       "framed" | 
 |     ], | 
 |     "sockets": [ | 
 |       "ip", | 
 |       "ip-ssl", | 
 |       "domain" | 
 |     ], | 
 |     "protocols": [ | 
 |       "binary", | 
 |       "multi" | 
 |     ], | 
 |     "client": { | 
 |       "command": [ | 
 |         "perl", | 
 |         "-Igen-perl/", | 
 |         "-I../../lib/perl/lib/", | 
 |         "TestClient.pl", | 
 |         "--ca=../keys/CA.pem", | 
 |         "--cert=../keys/client.crt", | 
 |         "--key=../keys/client.key" | 
 |       ], | 
 |       "protocols": [ | 
 |         "multi:binary" | 
 |       ] | 
 |     }, | 
 |     "server": { | 
 |       "command": [ | 
 |         "perl", | 
 |         "-Igen-perl/", | 
 |         "-I../../lib/perl/lib/", | 
 |         "TestServer.pl", | 
 |         "--cert=../keys/server.crt", | 
 |         "--key=../keys/server.key" | 
 |       ], | 
 |       "protocols": [ | 
 |         "binary:multi" | 
 |       ] | 
 |     }, | 
 |     "workdir": "perl" | 
 |   }, | 
 |   { | 
 |     "name": "php", | 
 |     "server": { | 
 |       "transports": [ | 
 |         "buffered", | 
 |         "framed" | 
 |       ], | 
 |       "sockets": [ | 
 |         "ip" | 
 |       ], | 
 |       "protocols": [ | 
 |         "binary", | 
 |         "binary:accel", | 
 |         "compact", | 
 |         "json" | 
 |       ], | 
 |       "command": [ | 
 |         "php", | 
 |         "-dextension_dir=php_ext_dir", | 
 |         "--php-ini=test_php.ini", | 
 |         "--no-php-ini", | 
 |         "-ddisplay_errors=stderr", | 
 |         "-dlog_errors=0", | 
 |         "-derror_reporting=E_ALL", | 
 |         "TestServer.php" | 
 |       ] | 
 |     }, | 
 |     "client": { | 
 |       "timeout": 6, | 
 |       "transports": [ | 
 |         "buffered", | 
 |         "framed" | 
 |       ], | 
 |       "sockets": [ | 
 |         "ip" | 
 |       ], | 
 |       "protocols": [ | 
 |         "binary", | 
 |         "binary:accel", | 
 |         "compact", | 
 |         "json" | 
 |       ], | 
 |       "command": [ | 
 |         "php", | 
 |         "-dextension_dir=php_ext_dir", | 
 |         "--php-ini=test_php.ini", | 
 |         "--no-php-ini", | 
 |         "-ddisplay_errors=stderr", | 
 |         "-dlog_errors=0", | 
 |         "-derror_reporting=E_ALL", | 
 |         "TestClient.php" | 
 |       ] | 
 |     }, | 
 |     "workdir": "php" | 
 |   }, | 
 |   { | 
 |     "name": "dart", | 
 |     "client": { | 
 |       "timeout": 30, | 
 |       "transports": [ | 
 |         "buffered", | 
 |         "framed", | 
 |         "http" | 
 |       ], | 
 |       "sockets": [ | 
 |         "ip" | 
 |       ], | 
 |       "protocols": [ | 
 |         "binary", | 
 |         "compact", | 
 |         "json" | 
 |       ], | 
 |       "command": [ | 
 |         "dart", | 
 | 	    "--enable-asserts", | 
 |         "test_client/bin/main.dart", | 
 | 	    "--verbose" | 
 |       ] | 
 |     }, | 
 |     "workdir": "dart" | 
 |   }, | 
 |   { | 
 |     "name": "erl", | 
 |     "transports": [ | 
 |       "buffered", | 
 |       "framed" | 
 |     ], | 
 |     "sockets": [ | 
 |       "ip", | 
 |       "ip-ssl" | 
 |     ], | 
 |     "protocols": [ | 
 |       "binary", | 
 |       "compact" | 
 |     ], | 
 |     "client": { | 
 |       "command": [ | 
 |         "erl", | 
 |         "+K", | 
 |         "true", | 
 |         "-noshell", | 
 |         "-pa", | 
 |         "../../lib/erl/_build/default/lib/thrift/ebin/", | 
 |         "-pa", | 
 |         "./_build/default/lib/thrift_test/ebin", | 
 |         "-s", | 
 |         "test_client", | 
 |         "-s", | 
 |         "init", | 
 |         "stop", | 
 |         "-extra" | 
 |       ] | 
 |     }, | 
 |     "server": { | 
 |       "command": [ | 
 |         "erl", | 
 |         "+K", | 
 |         "true", | 
 |         "-noshell", | 
 |         "-pa", | 
 |         "../../lib/erl/_build/default/lib/thrift/ebin/", | 
 |         "-pa", | 
 |         "./_build/default/lib/thrift_test/ebin", | 
 |         "-s", | 
 |         "test_thrift_server", | 
 |         "-extra" | 
 |       ] | 
 |     }, | 
 |     "workdir": "erl" | 
 |   }, | 
 |   { | 
 |     "name": "js", | 
 |     "transports": [ | 
 |       "http" | 
 |     ], | 
 |     "sockets": [ | 
 |       "ip" | 
 |     ], | 
 |     "protocols": [ | 
 |       "json" | 
 |     ], | 
 |     "client": { | 
 |       "command": [ | 
 |         "phantomjs", | 
 |         "test/phantom-client.js" | 
 |       ] | 
 |     }, | 
 |     "workdir": "../lib/js" | 
 |   }, | 
 |   { | 
 |     "name": "lua", | 
 |     "TODO": "Add dll to LUA_CPATH", | 
 |     "env": { | 
 |       "LUA_PATH": ";;gen-lua/?.lua;../../lib/lua/?.lua", | 
 |       "LUA_CPATH": ";;../../lib/lua/.libs/?.so" | 
 |     }, | 
 |     "client": { | 
 |       "timeout": 5, | 
 |       "command": [ | 
 |         "lua", | 
 |         "test_basic_client.lua" | 
 |       ] | 
 |     }, | 
 |     "server": { | 
 |       "delay": 5, | 
 |       "command": [ | 
 |         "lua", | 
 |         "test_basic_server.lua" | 
 |       ] | 
 |     }, | 
 |     "transports": [ | 
 |       "buffered", | 
 |       "framed", | 
 |       "http" | 
 |     ], | 
 |     "sockets": [ | 
 |       "ip" | 
 |     ], | 
 |     "protocols": [ | 
 |       "binary", | 
 |       "compact", | 
 |       "json" | 
 |     ], | 
 |     "workdir": "lua" | 
 |   }, | 
 |   { | 
 |     "name": "rs", | 
 |     "env": { | 
 |       "RUST_BACKTRACE": "1", | 
 |       "RUST_LOG": "info" | 
 |     }, | 
 |     "server": { | 
 |       "command": [ | 
 |         "test_server" | 
 |       ], | 
 |       "protocols": [ | 
 |         "binary:multi", | 
 |         "compact:multic" | 
 |       ] | 
 |     }, | 
 |     "client": { | 
 |       "timeout": 6, | 
 |       "command": [ | 
 |         "test_client" | 
 |       ], | 
 |       "protocols": [ | 
 |         "multi:binary", | 
 |         "multic:compact" | 
 |       ] | 
 |     }, | 
 |     "sockets": [ | 
 |       "ip", | 
 |       "domain" | 
 |     ], | 
 |     "transports": [ | 
 |       "buffered", | 
 |       "framed" | 
 |     ], | 
 |     "protocols": [ | 
 |       "binary", | 
 |       "compact", | 
 |       "multi", | 
 |       "multic" | 
 |     ], | 
 |     "workdir": "rs/bin" | 
 |   }, | 
 |   { | 
 |     "name": "nodets", | 
 |     "env": { | 
 |       "NODE_PATH": "../lib" | 
 |     }, | 
 |     "server": { | 
 |       "command": [ | 
 |         "runServer.sh" | 
 |       ] | 
 |     }, | 
 |     "client": { | 
 |       "timeout": 6, | 
 |       "command": [ | 
 |         "runClient.sh" | 
 |       ] | 
 |     }, | 
 |     "protocols": [ | 
 |       "binary" | 
 |     ], | 
 |     "sockets": [ | 
 |       "ip" | 
 |     ], | 
 |     "transports": [ | 
 |       "buffered" | 
 |     ], | 
 |     "workdir": "../lib/nodets/test" | 
 |   }, | 
 |   { | 
 |     "name": "swift", | 
 |     "server": { | 
 |       "command": ["TestServer"], | 
 |       "workdir": "swift/CrossTests/.build/x86_64-unknown-linux-gnu/debug", | 
 |       "protocols": ["binary", "compact"], | 
 |       "transports": ["buffered", "framed"], | 
 |       "sockets": ["ip", "domain"] | 
 |     }, | 
 |     "client": { | 
 |       "command": ["TestClient"], | 
 |       "workdir": "swift/CrossTests/.build/x86_64-unknown-linux-gnu/debug", | 
 |       "protocols": ["binary", "compact"], | 
 |       "transports": ["buffered", "framed"], | 
 |       "sockets": ["ip", "domain"] | 
 |     } | 
 |   } | 
 | ] |