THRIFT-2946 Enhance usability of cross test framework

*make fail* runs test.py 4 times to detect nondeterministic failures.
diff --git a/Makefile.am b/Makefile.am
index 5b60c5f..9ba6e8e 100755
--- a/Makefile.am
+++ b/Makefile.am
@@ -46,9 +46,11 @@
 cross: precross
 	$(PYTHON) test/test.py -s
 
+TIMES = 1 2 3
 fail: precross
-	$(PYTHON) test/test.py
+	$(PYTHON) test/test.py || true
 	$(PYTHON) test/test.py --update-expected-failures=overwrite
+	$(foreach var,$(TIMES),test/test.py -s || true;test/test.py --update-expected-failures=merge;)
 
 codespell_skip_files = \
 	*.jar \
diff --git a/test/known_failures_Linux.json b/test/known_failures_Linux.json
index 6ed201b..04419c2 100644
--- a/test/known_failures_Linux.json
+++ b/test/known_failures_Linux.json
@@ -17,6 +17,7 @@
   "c_glib-rb_binary_framed-ip",
   "cpp-cpp_binary_http-domain",
   "cpp-cpp_binary_http-ip",
+  "cpp-cpp_compact_http-domain",
   "cpp-cpp_compact_http-ip",
   "cpp-cpp_json_http-domain",
   "cpp-cpp_json_http-ip",
@@ -65,6 +66,7 @@
   "cpp-java_compact_http-ip-ssl",
   "cpp-java_json_http-ip",
   "cpp-java_json_http-ip-ssl",
+  "cpp-nodejs_json_buffered-ip-ssl",
   "cpp-php_binary_framed-ip",
   "cpp-rb_binary-accel_buffered-ip",
   "cpp-rb_binary-accel_framed-ip",
@@ -426,6 +428,7 @@
   "nodejs-hs_json_framed-ip",
   "nodejs-hs_json_framed-ip-ssl",
   "nodejs-java_json_buffered-ip-ssl",
+  "nodejs-nodejs_json_buffered-ip-ssl",
   "nodejs-php_binary_framed-ip",
   "nodejs-py_json_buffered-ip",
   "nodejs-py_json_buffered-ip-ssl",