Merge github.com:grpc/grpc into check-some-more-things
diff --git a/Makefile b/Makefile
index 024e54f..0f9a493 100644
--- a/Makefile
+++ b/Makefile
@@ -2010,6 +2010,10 @@
 test_cxx: buildtests_cxx
 	$(E) "[RUN]     Testing async_end2end_test"
 	$(Q) $(BINDIR)/$(CONFIG)/async_end2end_test || ( echo test async_end2end_test failed ; exit 1 )
+	$(E) "[RUN]     Testing async_streaming_ping_pong_test"
+	$(Q) $(BINDIR)/$(CONFIG)/async_streaming_ping_pong_test || ( echo test async_streaming_ping_pong_test failed ; exit 1 )
+	$(E) "[RUN]     Testing async_unary_ping_pong_test"
+	$(Q) $(BINDIR)/$(CONFIG)/async_unary_ping_pong_test || ( echo test async_unary_ping_pong_test failed ; exit 1 )
 	$(E) "[RUN]     Testing channel_arguments_test"
 	$(Q) $(BINDIR)/$(CONFIG)/channel_arguments_test || ( echo test channel_arguments_test failed ; exit 1 )
 	$(E) "[RUN]     Testing cli_call_test"
@@ -2028,6 +2032,10 @@
 	$(Q) $(BINDIR)/$(CONFIG)/mock_test || ( echo test mock_test failed ; exit 1 )
 	$(E) "[RUN]     Testing status_test"
 	$(Q) $(BINDIR)/$(CONFIG)/status_test || ( echo test status_test failed ; exit 1 )
+	$(E) "[RUN]     Testing sync_streaming_ping_pong_test"
+	$(Q) $(BINDIR)/$(CONFIG)/sync_streaming_ping_pong_test || ( echo test sync_streaming_ping_pong_test failed ; exit 1 )
+	$(E) "[RUN]     Testing sync_unary_ping_pong_test"
+	$(Q) $(BINDIR)/$(CONFIG)/sync_unary_ping_pong_test || ( echo test sync_unary_ping_pong_test failed ; exit 1 )
 	$(E) "[RUN]     Testing thread_pool_test"
 	$(Q) $(BINDIR)/$(CONFIG)/thread_pool_test || ( echo test thread_pool_test failed ; exit 1 )
 	$(E) "[RUN]     Testing thread_stress_test"
diff --git a/build.json b/build.json
index 18c0eb1..8a7e65b 100644
--- a/build.json
+++ b/build.json
@@ -1813,7 +1813,6 @@
     {
       "name": "async_streaming_ping_pong_test",
       "build": "test",
-      "run": false,
       "language": "c++",
       "src": [
         "test/cpp/qps/async_streaming_ping_pong_test.cc"
@@ -1831,7 +1830,6 @@
     {
       "name": "async_unary_ping_pong_test",
       "build": "test",
-      "run": false,
       "language": "c++",
       "src": [
         "test/cpp/qps/async_unary_ping_pong_test.cc"
@@ -2207,7 +2205,6 @@
     {
       "name": "sync_streaming_ping_pong_test",
       "build": "test",
-      "run": false,
       "language": "c++",
       "src": [
         "test/cpp/qps/sync_streaming_ping_pong_test.cc"
@@ -2225,7 +2222,6 @@
     {
       "name": "sync_unary_ping_pong_test",
       "build": "test",
-      "run": false,
       "language": "c++",
       "src": [
         "test/cpp/qps/sync_unary_ping_pong_test.cc"
diff --git a/test/cpp/qps/driver.cc b/test/cpp/qps/driver.cc
index 9f7d3b5..08a32f0 100644
--- a/test/cpp/qps/driver.cc
+++ b/test/cpp/qps/driver.cc
@@ -44,6 +44,7 @@
 #include <thread>
 #include <deque>
 #include <vector>
+#include <unistd.h>
 #include "test/cpp/qps/histogram.h"
 #include "test/cpp/qps/qps_worker.h"
 #include "test/core/util/port.h"
@@ -96,6 +97,14 @@
   // Spawn some local workers if desired
   vector<unique_ptr<QpsWorker>> local_workers;
   for (int i = 0; i < abs(spawn_local_worker_count); i++) {
+    // act as if we're a new test -- gets a good rng seed
+    static bool called_init = false;
+    if (!called_init) {
+      char *args[] = {"some-benchmark"};
+      grpc_test_init(1, args);
+      called_init = true;
+    }
+
     int driver_port = grpc_pick_unused_port_or_die();
     int benchmark_port = grpc_pick_unused_port_or_die();
     local_workers.emplace_back(new QpsWorker(driver_port, benchmark_port));
diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json
index e2454c4..7a0d93b 100644
--- a/tools/run_tests/tests.json
+++ b/tools/run_tests/tests.json
@@ -599,6 +599,24 @@
   {
     "flaky": false, 
     "language": "c++", 
+    "name": "async_streaming_ping_pong_test", 
+    "platforms": [
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "flaky": false, 
+    "language": "c++", 
+    "name": "async_unary_ping_pong_test", 
+    "platforms": [
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "flaky": false, 
+    "language": "c++", 
     "name": "channel_arguments_test", 
     "platforms": [
       "windows", 
@@ -680,6 +698,24 @@
   {
     "flaky": false, 
     "language": "c++", 
+    "name": "sync_streaming_ping_pong_test", 
+    "platforms": [
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "flaky": false, 
+    "language": "c++", 
+    "name": "sync_unary_ping_pong_test", 
+    "platforms": [
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "flaky": false, 
+    "language": "c++", 
     "name": "thread_pool_test", 
     "platforms": [
       "windows",