THRIFT-4434: .NET Core cleanup and the beginnings of compiler unit tests
Client: netcore

This closes #1449
diff --git a/test/tests.json b/test/tests.json
index c4e07ee..fd79a9b 100644
--- a/test/tests.json
+++ b/test/tests.json
@@ -1,689 +1,686 @@
-[
-  {
-    "name": "c_glib",
-    "platforms": [
-      "Linux"
-    ],
-    "server": {
-      "command": [
-        "test_server",
-        "--lt-debug"
-      ],
-      "protocols": [
-        "binary:multi",
-        "compact:multic"
-      ]
+[{
+        "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"
+        ],
+        "protocols": [
+            "binary",
+            "compact",
+            "multi",
+            "multic"
+        ],
+        "workdir": "c_glib"
     },
-    "client": {
-      "command": [
-        "test_client",
-        "--lt-debug"
-      ],
-      "protocols": [
-        "multi:binary",
-        "multic:compact"
-      ],
-      "sockets": [
-        "ip-ssl"
-      ]
+    {
+        "name": "d",
+        "server": {
+            "command": [
+                "thrift_test_server"
+            ]
+        },
+        "client": {
+            "command": [
+                "thrift_test_client"
+            ]
+        },
+        "transports": [
+            "http",
+            "buffered",
+            "framed"
+        ],
+        "sockets": [
+            "ip",
+            "ip-ssl"
+        ],
+        "protocols": [
+            "binary",
+            "compact",
+            "json"
+        ],
+        "workdir": "../lib/d/test"
     },
-    "transports": [
-      "buffered",
-      "framed"
-    ],
-    "sockets": [
-      "ip"
-    ],
-    "protocols": [
-      "binary",
-      "compact",
-      "multi",
-      "multic"
-    ],
-    "workdir": "c_glib"
-  },
-  {
-    "name": "d",
-    "server": {
-      "command": [
-        "thrift_test_server"
-      ]
+    {
+        "name": "go",
+        "server": {
+            "command": [
+                "testserver",
+                "--certPath=../../keys"
+            ]
+        },
+        "client": {
+            "timeout": 6,
+            "command": [
+                "testclient"
+            ]
+        },
+        "transports": [
+            "buffered",
+            "framed",
+            "http"
+        ],
+        "sockets": [
+            "ip",
+            "ip-ssl"
+        ],
+        "protocols": [
+            "binary",
+            "compact",
+            "json"
+        ],
+        "workdir": "go/bin"
     },
-    "client": {
-      "command": [
-        "thrift_test_client"
-      ]
+    {
+        "name": "java",
+        "join_args": true,
+        "command": [
+            "ant",
+            "-f",
+            "build.xml",
+            "-Dno-gen-thrift=\"\"",
+            "-Dtestargs"
+        ],
+        "prepare": [
+            "ant",
+            "-f",
+            "build.xml",
+            "compile-test"
+        ],
+        "server": {
+            "delay": 10,
+            "extra_args": ["run-testserver"],
+            "protocols": [
+                "binary:multi",
+                "compact:multic",
+                "json:multij"
+            ]
+        },
+        "client": {
+            "timeout": 13,
+            "extra_args": ["run-testclient"],
+            "transports": [
+                "http"
+            ],
+            "protocols": [
+                "multi:binary",
+                "multic:compact",
+                "multij:json"
+            ]
+        },
+        "transports": [
+            "buffered",
+            "framed",
+            "framed:fastframed"
+        ],
+        "sockets": [
+            "ip",
+            "ip-ssl"
+        ],
+        "protocols": [
+            "binary",
+            "compact",
+            "json",
+            "multi",
+            "multic",
+            "multij"
+        ],
+        "workdir": "../lib/java"
     },
-    "transports": [
-      "http",
-      "buffered",
-      "framed"
-    ],
-    "sockets": [
-      "ip",
-      "ip-ssl"
-    ],
-    "protocols": [
-      "binary",
-      "compact",
-      "json"
-    ],
-    "workdir": "../lib/d/test"
-  },
-  {
-    "name": "go",
-    "server": {
-      "command": [
-        "testserver",
-        "--certPath=../../keys"
-      ]
+    {
+        "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"
+        ],
+        "sockets": [
+            "ip",
+            "ip-ssl"
+        ],
+        "protocols": [
+            "compact",
+            "binary",
+            "json"
+        ],
+        "workdir": "../lib/nodejs/test"
     },
-    "client": {
-      "timeout": 6,
-      "command": [
-        "testclient"
-      ]
+    {
+        "name": "hs",
+        "server": {
+            "command": [
+                "TestServer"
+            ]
+        },
+        "client": {
+            "timeout": 6,
+            "transports": [
+                "http"
+            ],
+            "command": [
+                "TestClient"
+            ]
+        },
+        "transports": [
+            "buffered",
+            "framed"
+        ],
+        "sockets": [
+            "ip"
+        ],
+        "protocols": [
+            "header",
+            "compact",
+            "binary",
+            "json"
+        ],
+        "workdir": "hs"
     },
-    "transports": [
-      "buffered",
-      "framed",
-      "http"
-    ],
-    "sockets": [
-      "ip",
-      "ip-ssl"
-    ],
-    "protocols": [
-      "binary",
-      "compact",
-      "json"
-    ],
-    "workdir": "go/bin"
-  },
-  {
-    "name": "java",
-    "join_args": true,
-    "command": [
-      "ant",
-      "-f",
-      "build.xml",
-      "-Dno-gen-thrift=\"\"",
-      "-Dtestargs"
-    ],
-    "prepare": [
-      "ant",
-      "-f",
-      "build.xml",
-      "compile-test"
-    ],
-    "server": {
-      "delay": 10,
-      "extra_args": ["run-testserver"],
-      "protocols": [
-        "binary:multi",
-        "compact:multic",
-        "json:multij"
-      ]
+    {
+        "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"
+        ],
+        "sockets": [
+            "ip",
+            "ip-ssl"
+        ],
+        "protocols": [
+            "compact",
+            "binary",
+            "json",
+            "binary:accel",
+            "compact:accelc"
+        ],
+        "workdir": "py"
     },
-    "client": {
-      "timeout": 13,
-      "extra_args": ["run-testclient"],
-      "transports": [
-        "http"
-      ],
-      "protocols": [
-        "multi:binary",
-        "multic:compact",
-        "multij:json"
-      ]
+    {
+        "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"
+        ],
+        "sockets": [
+            "ip-ssl",
+            "ip"
+        ],
+        "protocols": [
+            "compact",
+            "binary",
+            "json",
+            "binary:accel",
+            "compact:accelc"
+        ],
+        "workdir": "py"
     },
-    "transports": [
-      "buffered",
-      "framed",
-      "framed:fastframed"
-    ],
-    "sockets": [
-      "ip",
-      "ip-ssl"
-    ],
-    "protocols": [
-      "binary",
-      "compact",
-      "json",
-      "multi",
-      "multic",
-      "multij"
-    ],
-    "workdir": "../lib/java"
-  },
-  {
-    "name": "nodejs",
-    "env": {
-      "NODE_PATH": "../lib"
+    {
+        "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"
+        ],
+        "sockets": [
+            "ip",
+            "ip-ssl",
+            "domain"
+        ],
+        "protocols": [
+            "compact",
+            "binary",
+            "json",
+            "header",
+            "multi",
+            "multic",
+            "multih",
+            "multij"
+        ],
+        "workdir": "cpp"
     },
-    "server": {
-      "command": [
-        "node",
-        "server.js",
-        "--type=tcp"
-      ]
+    {
+        "name": "rb",
+        "server": {
+            "command": [
+                "ruby",
+                "../integration/TestServer.rb"
+            ]
+        },
+        "client": {
+            "timeout": 5,
+            "command": [
+                "ruby",
+                "../integration/TestClient.rb"
+            ]
+        },
+        "transports": [
+            "buffered",
+            "framed"
+        ],
+        "sockets": [
+            "ip"
+        ],
+        "protocols": [
+            "compact",
+            "binary",
+            "json",
+            "binary:accel"
+        ],
+        "workdir": "rb/gen-rb"
     },
-    "client": {
-      "timeout": 6,
-      "command": [
-        "node",
-        "client.js",
-        "--type=tcp"
-      ]
+    {
+        "name": "csharp",
+        "env": {
+            "MONO_PATH": "../../lib/csharp/"
+        },
+        "transports": [
+            "buffered",
+            "framed"
+        ],
+        "sockets": [
+            "ip",
+            "ip-ssl"
+        ],
+        "protocols": [
+            "binary",
+            "compact",
+            "json"
+        ],
+        "server": {
+            "command": [
+                "mono",
+                "TestClientServer.exe",
+                "server"
+            ]
+        },
+        "client": {
+            "timeout": 9,
+            "command": [
+                "mono",
+                "TestClientServer.exe",
+                "client"
+            ],
+            "protocols": [
+                "multi",
+                "multic",
+                "multi:binary",
+                "multic:compact"
+            ]
+        },
+        "workdir": "csharp"
     },
-    "transports": [
-      "buffered",
-      "framed",
-      "http"
-    ],
-    "sockets": [
-      "ip",
-      "ip-ssl"
-    ],
-    "protocols": [
-      "compact",
-      "binary",
-      "json"
-    ],
-    "workdir": "../lib/nodejs/test"
-  },
-  {
-    "name": "hs",
-    "server": {
-      "command": [
-        "TestServer"
-      ]
+    {
+        "name": "netcore",
+        "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": "netcore"
     },
-    "client": {
-      "timeout": 6,
-      "transports": [
-        "http"
-      ],
-      "command": [
-        "TestClient"
-      ]
+    {
+        "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"
     },
-    "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"
-      ]
+    {
+        "name": "php",
+        "client": {
+            "timeout": 6,
+            "transports": [
+                "buffered",
+                "framed"
+            ],
+            "sockets": [
+                "ip"
+            ],
+            "protocols": [
+                "binary",
+                "compact",
+                "binary:accel"
+            ],
+            "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"
     },
-    "client": {
-      "timeout": 10,
-      "command": [
-        "TestClient.py",
-        "--verbose",
-        "--host=localhost",
-        "--genpydir=gen-py"
-      ]
+    {
+        "name": "dart",
+        "client": {
+            "transports": [
+                "buffered",
+                "framed",
+                "http"
+            ],
+            "sockets": [
+                "ip"
+            ],
+            "protocols": [
+                "binary",
+                "compact",
+                "json"
+            ],
+            "command": [
+                "dart",
+                "test_client/bin/main.dart"
+            ]
+        },
+        "workdir": "dart"
     },
-    "transports": [
-      "buffered",
-      "framed"
-    ],
-    "sockets": [
-      "ip",
-      "ip-ssl"
-    ],
-    "protocols": [
-      "compact",
-      "binary",
-      "json",
-      "binary:accel",
-      "compact:accelc"
-    ],
-    "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"
-      ]
+    {
+        "name": "erl",
+        "transports": [
+            "buffered",
+            "framed"
+        ],
+        "sockets": [
+            "ip",
+            "ip-ssl"
+        ],
+        "protocols": [
+            "binary",
+            "compact"
+        ],
+        "client": {
+            "command": [
+                "erl",
+                "+K",
+                "true",
+                "-noshell",
+                "-pa",
+                "../../lib/erl/ebin/",
+                "-pa",
+                "./ebin",
+                "-s",
+                "test_client",
+                "-s",
+                "init",
+                "stop",
+                "-extra"
+            ]
+        },
+        "server": {
+            "command": [
+                "erl",
+                "+K",
+                "true",
+                "-noshell",
+                "-pa",
+                "../../lib/erl/ebin/",
+                "-pa",
+                "./ebin",
+                "-s",
+                "test_thrift_server",
+                "-extra"
+            ]
+        },
+        "workdir": "erl"
     },
-    "client": {
-      "timeout": 10,
-      "command": [
-        "python3",
-        "TestClient.py",
-        "--host=localhost",
-        "--genpydir=gen-py"
-      ]
+    {
+        "name": "js",
+        "transports": [
+            "http"
+        ],
+        "sockets": [
+            "ip"
+        ],
+        "protocols": [
+            "json"
+        ],
+        "client": {
+            "command": [
+                "phantomjs",
+                "test/phantom-client.js"
+            ]
+        },
+        "workdir": "../lib/js"
     },
-    "transports": [
-      "buffered",
-      "framed"
-    ],
-    "sockets": [
-      "ip-ssl",
-      "ip"
-    ],
-    "protocols": [
-      "compact",
-      "binary",
-      "json",
-      "binary:accel",
-      "compact:accelc"
-    ],
-    "workdir": "py"
-  },
-  {
-    "name": "cpp",
-    "server": {
-      "command": [
-        "TestServer"
-      ],
-      "protocols": [
-        "binary:multi",
-        "compact:multic",
-        "header:multih",
-        "json:multij"
-      ]
+    {
+        "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,
+            "transports": [
+                "buffered",
+                "framed",
+                "http"
+            ],
+            "sockets": [
+                "ip"
+            ],
+            "protocols": [
+                "binary",
+                "compact",
+                "json"
+            ],
+            "command": [
+                "lua",
+                "test_basic_client.lua"
+            ]
+        },
+        "workdir": "lua"
     },
-    "client": {
-      "timeout": 8,
-      "command": [
-        "TestClient"
-      ],
-      "protocols": [
-        "multi:binary",
-        "multic:compact",
-        "multih:header",
-        "multij:json"
-      ]
-    },
-    "transports": [
-      "buffered",
-      "http",
-      "framed"
-    ],
-    "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": 5,
-      "command": [
-        "ruby",
-        "../integration/TestClient.rb"
-      ]
-    },
-    "transports": [
-      "buffered",
-      "framed"
-    ],
-    "sockets": [
-      "ip"
-    ],
-    "protocols": [
-      "compact",
-      "binary",
-      "json",
-      "binary:accel"
-    ],
-    "workdir": "rb/gen-rb"
-  },
-  {
-    "name": "csharp",
-    "env": {
-      "MONO_PATH": "../../lib/csharp/"
-    },
-    "transports": [
-      "buffered",
-      "framed"
-    ],
-    "sockets": [
-      "ip",
-      "ip-ssl"
-    ],
-    "protocols": [
-      "binary",
-      "compact",
-      "json"
-    ],
-    "server": {
-      "command": [
-        "mono",
-        "TestClientServer.exe",
-        "server"
-      ]
-    },
-    "client": {
-      "timeout": 9,
-      "command": [
-        "mono",
-        "TestClientServer.exe",
-        "client"
-      ],
-      "protocols": [
-        "multi",
-        "multic",
-        "multi:binary",
-        "multic:compact"
-      ]
-    },
-    "workdir": "csharp"
-  },
-  {
-    "name": "netcore",
-    "transports": [
-      "buffered",
-      "framed"
-    ],
-    "sockets": [
-      "ip",
-      "ip-ssl"
-    ],
-    "protocols": [
-      "binary",
-      "compact",
-      "json"
-    ],
-    "server-disabled": {
-      "command": [
-        "dotnet",
-        "run",
-  "--no-build",
-  "--no-restore",
-  "--",
-        "server"
-      ]
-    },
-    "client": {
-      "timeout": 10,
-      "command": [
-        "dotnet",
-        "run",
-  "--no-build",
-  "--no-restore",
-  "--",
-        "client"
-      ]
-    },
-    "workdir": "netcore/ThriftTest"
-  },
-  {
-    "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",
-    "client": {
-      "timeout": 6,
-      "transports": [
-        "buffered",
-        "framed"
-      ],
-      "sockets": [
-        "ip"
-      ],
-      "protocols": [
-        "binary",
-        "compact",
-        "binary:accel"
-      ],
-      "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": {
-      "transports": [
-        "buffered",
-        "framed",
-        "http"
-      ],
-      "sockets": [
-        "ip"
-      ],
-      "protocols": [
-        "binary",
-        "compact",
-        "json"
-      ],
-      "command": [
-        "dart",
-        "test_client/bin/main.dart"
-      ]
-    },
-    "workdir": "dart"
-  },
-  {
-    "name": "erl",
-    "transports": [
-      "buffered",
-      "framed"
-    ],
-    "sockets": [
-      "ip",
-      "ip-ssl"
-    ],
-    "protocols": [
-      "binary",
-      "compact"
-    ],
-    "client": {
-      "command": [
-        "erl",
-        "+K",
-        "true",
-        "-noshell",
-        "-pa",
-        "../../lib/erl/ebin/",
-        "-pa",
-        "./ebin",
-        "-s",
-        "test_client",
-        "-s",
-        "init",
-        "stop",
-        "-extra"
-      ]
-    },
-    "server": {
-      "command": [
-        "erl",
-        "+K",
-        "true",
-        "-noshell",
-        "-pa",
-        "../../lib/erl/ebin/",
-        "-pa",
-        "./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,
-      "transports": [
-        "buffered",
-        "framed",
-        "http"
-      ],
-      "sockets": [
-        "ip"
-      ],
-      "protocols": [
-        "binary",
-        "compact",
-        "json"
-      ],
-      "command": [
-        "lua",
-        "test_basic_client.lua"
-      ]
-    },
-    "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"
-    ],
-    "transports": [
-      "buffered",
-      "framed"
-    ],
-    "protocols": [
-      "binary",
-      "compact",
-      "multi",
-      "multic"
-    ],
-    "workdir": "rs/bin"
-  }
-]
+    {
+        "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"
+        ],
+        "transports": [
+            "buffered",
+            "framed"
+        ],
+        "protocols": [
+            "binary",
+            "compact",
+            "multi",
+            "multic"
+        ],
+        "workdir": "rs/bin"
+    }
+]
\ No newline at end of file